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.
Files changed (1293) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +65 -3
  3. data/CONTRIBUTORS +2 -0
  4. data/README.md +2 -2
  5. data/bin/passenger-install-nginx-module +4 -4
  6. data/build/integration_tests.rb +2 -1
  7. data/build/support/cxx_dependency_map.rb +155 -54
  8. data/dev/copy_boost_headers +21 -7
  9. data/dev/nginx_version_sha256 +72 -0
  10. data/package.json +15 -15
  11. data/src/agent/AgentMain.cpp +2 -8
  12. data/src/agent/Core/AdminPanelConnector.h +2 -3
  13. data/src/agent/Core/ApiServer.h +1 -1
  14. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +8 -1
  15. data/src/agent/Core/Config.h +6 -3
  16. data/src/agent/Core/Controller/AppResponse.h +0 -1
  17. data/src/agent/Core/Controller/Config.h +2 -2
  18. data/src/agent/Core/Controller/SendRequest.cpp +2 -2
  19. data/src/agent/Core/CoreMain.cpp +1 -0
  20. data/src/agent/Core/ResponseCache.h +3 -2
  21. data/src/agent/Core/SecurityUpdateChecker.h +1 -1
  22. data/src/agent/Core/SpawningKit/Handshake/Perform.h +4 -4
  23. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +2 -2
  24. data/src/agent/ExecHelper/ExecHelperMain.cpp +10 -12
  25. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +7 -10
  26. data/src/agent/MainFunctions.h +38 -0
  27. data/src/agent/Shared/ApiServerUtils.h +3 -2
  28. data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -1
  29. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +2 -3
  30. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +1 -0
  31. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +6 -4
  32. data/src/agent/Watchdog/ApiServer.h +1 -1
  33. data/src/agent/Watchdog/Config.h +1 -1
  34. data/src/agent/Watchdog/WatchdogMain.cpp +5 -12
  35. data/src/apache2_module/Hooks.cpp +26 -1
  36. data/src/cxx_supportlib/ConfigKit/Common.h +1 -1
  37. data/src/cxx_supportlib/Constants.h +1 -1
  38. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -1
  39. data/src/cxx_supportlib/FileTools/PathManip.cpp +10 -1
  40. data/src/cxx_supportlib/IOTools/IOUtils.cpp +2 -6
  41. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +3 -3
  42. data/src/cxx_supportlib/JsonTools/CBindings.cpp +0 -2
  43. data/src/cxx_supportlib/JsonTools/JsonUtils.h +4 -4
  44. data/src/cxx_supportlib/LoggingKit/Context.h +16 -21
  45. data/src/cxx_supportlib/LoggingKit/Forward.h +0 -2
  46. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +36 -72
  47. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +12 -4
  48. data/src/cxx_supportlib/MemoryKit/mbuf.h +1 -1
  49. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +1 -1
  50. data/src/cxx_supportlib/ResourceLocator.h +1 -1
  51. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +3 -94
  52. data/src/cxx_supportlib/SecurityKit/Crypto.h +0 -8
  53. data/src/cxx_supportlib/ServerKit/Context.h +6 -0
  54. data/src/cxx_supportlib/ServerKit/Errors.h +3 -2
  55. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +99 -64
  56. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +4 -1
  57. data/src/cxx_supportlib/ServerKit/HttpRequest.h +2 -2
  58. data/src/cxx_supportlib/ServerKit/HttpServer.h +3 -2
  59. data/src/cxx_supportlib/ServerKit/llerrors.h +84 -0
  60. data/src/cxx_supportlib/ServerKit/llhttp.c +10168 -0
  61. data/src/cxx_supportlib/ServerKit/llhttp.h +903 -0
  62. data/src/cxx_supportlib/ServerKit/llhttp_api.c +510 -0
  63. data/src/cxx_supportlib/ServerKit/llhttp_http.c +170 -0
  64. data/src/cxx_supportlib/ServerKit/llversion.h +12 -0
  65. data/src/cxx_supportlib/ServerKit/url_parser.c +574 -0
  66. data/src/cxx_supportlib/ServerKit/url_parser.h +74 -0
  67. data/src/cxx_supportlib/StaticString.h +3 -1
  68. data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
  69. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +12 -3
  70. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +5 -0
  71. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +2 -2
  72. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +14 -14
  73. data/src/cxx_supportlib/SystemTools/UserDatabase.h +6 -10
  74. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +11 -9
  75. data/src/cxx_supportlib/Utils.cpp +1 -1
  76. data/src/cxx_supportlib/oxt/implementation.cpp +1 -2
  77. data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +26 -32
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +194 -56
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +34 -42
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/append.hpp +10 -23
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +21 -34
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +26 -45
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +26 -43
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +30 -52
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +282 -0
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +178 -863
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +1 -1
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +64 -98
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +17 -22
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +18 -23
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +4 -8
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +30 -42
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +65 -96
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +20 -29
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +36 -48
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +31 -44
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +73 -23
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +34 -45
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +108 -151
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +6 -82
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +6 -51
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +30 -40
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +50 -76
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +13 -15
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +3 -3
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +23 -32
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +20 -29
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +97 -299
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +97 -288
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +90 -288
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +551 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +365 -290
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +29 -39
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +27 -39
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +33 -49
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +27 -39
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +4 -4
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +25 -85
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +16 -16
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +8 -25
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +17 -17
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +60 -272
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +52 -79
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/connect_pipe.hpp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +11 -24
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +2 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +37 -34
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +302 -262
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +12 -20
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +2 -10
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +2 -4
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +5 -13
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +21 -20
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +2 -2
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +129 -563
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +3 -3
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +3 -7
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +2 -23
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +4 -4
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +21 -97
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +1 -1
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +155 -963
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +3 -11
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -5
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +2 -24
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +4 -4
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +41 -3
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +40 -3
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +20 -3
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +20 -3
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +3 -5
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/exception.hpp +2 -13
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +8 -60
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +6 -6
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +3 -43
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -12
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +9 -10
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +3 -5
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +41 -104
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +3 -3
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +9 -15
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +101 -123
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -15
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +2 -2
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +13 -4
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +2 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +17 -8
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +5 -5
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_descriptor_service.ipp +2 -2
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_file_service.ipp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.ipp +69 -35
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_socket_service_base.ipp +2 -2
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +2 -2
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +15 -6
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +1 -1
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_serial_port_service.ipp +1 -1
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +9 -9
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +26 -18
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +3 -3
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +2 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +2 -2
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +12 -4
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +2 -3
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +57 -4
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +63 -5
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +47 -68
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +2 -3
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +12 -12
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_defer.hpp +209 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_dispatch.hpp +195 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_post.hpp +209 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +6 -10
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +6 -3
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_op.hpp +6 -3
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_service.hpp +17 -9
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +6 -3
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_op.hpp +6 -3
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_file_service.hpp +2 -3
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_null_buffers_op.hpp +5 -4
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_operation.hpp +1 -1
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_service.hpp +4 -3
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_accept_op.hpp +11 -12
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_connect_op.hpp +5 -4
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recv_op.hpp +6 -3
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +7 -4
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +6 -3
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_send_op.hpp +6 -3
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_sendto_op.hpp +6 -3
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service.hpp +11 -13
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service_base.hpp +9 -9
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_wait_op.hpp +5 -4
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +7 -49
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +20 -3
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +1 -6
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +13 -43
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +3 -5
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +4 -15
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +1 -1
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +1 -1
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +3 -3
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +1 -1
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +1 -1
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_serial_port_service.hpp +1 -1
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +1 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +61 -25
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +37 -4
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +89 -12
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +41 -4
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +40 -4
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +41 -4
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +41 -4
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +41 -4
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +40 -4
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +20 -20
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +135 -38
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +37 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +1 -1
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +2 -2
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +4 -13
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +4 -4
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +4 -4
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +3 -3
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_task.hpp +1 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +20 -3
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +2 -3
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +3 -3
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +12 -3
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +11 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +1 -1
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +3 -5
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -6
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -6
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -6
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -6
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -6
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -6
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +13 -13
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +1 -1
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +3 -5
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +1 -1
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +12 -22
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +2 -2
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +1 -1
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +104 -90
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +4 -4
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +3 -3
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +2 -2
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +20 -34
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +7 -117
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +36 -34
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +34 -112
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +268 -991
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +3 -4
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +296 -536
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +232 -409
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +20 -73
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +30 -72
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +24 -170
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +3 -3
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +2 -30
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +240 -398
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +20 -73
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +149 -296
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +56 -59
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +149 -296
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +1 -16
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +1 -25
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +59 -43
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +56 -61
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +1 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +20 -24
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +1 -1
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +7 -7
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +56 -34
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +56 -34
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +25 -28
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel.hpp +3 -3
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_error.hpp +1 -1
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +15 -15
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +5 -4
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +1 -1
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/concurrent_channel.hpp +3 -3
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +1 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro_traits.hpp +1 -1
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +1 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +10 -13
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_message.hpp +27 -20
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +193 -38
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_payload.hpp +143 -14
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +24 -9
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +77 -17
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +20 -12
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +50 -50
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +3 -3
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +1 -1
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/has_signature.hpp +1 -1
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +46 -34
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +1 -1
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +33 -96
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/channel_error.ipp +2 -2
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +62 -20
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +48 -45
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +56 -60
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +18 -4
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +5 -5
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +3 -3
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +27 -31
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +1 -1
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +1 -1
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +15 -21
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +13 -13
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/file_base.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -6
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -6
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +10 -14
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +10 -17
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +37 -100
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +99 -107
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +66 -25
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +55 -178
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +55 -178
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancellation_signal.ipp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +123 -73
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +84 -234
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.hpp +1 -1
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.ipp +1 -1
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +32 -97
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +73 -31
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +5 -58
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +4 -4
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +3 -35
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +60 -43
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +3 -3
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +39 -56
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +2 -1
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +4 -8
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +36 -98
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +206 -429
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +60 -206
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +456 -970
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +43 -411
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +207 -423
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -3
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +2 -2
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +2 -2
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +19 -25
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +32 -109
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +5 -4
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +2 -2
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +79 -425
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +213 -427
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +58 -194
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +91 -120
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +33 -25
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +26 -35
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +28 -36
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +13 -19
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +16 -22
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +33 -42
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +13 -18
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +15 -20
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +13 -3
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +26 -35
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +46 -76
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +4 -8
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +17 -1
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +9 -13
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +17 -17
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -14
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +18 -22
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +9 -13
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +24 -32
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -3
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -3
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +1 -1
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +16 -20
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +14 -18
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +7 -7
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +1 -1
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +1 -1
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +6 -6
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/is_contiguous_iterator.hpp +2 -2
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +2 -6
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +1 -1
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +1 -1
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/local/seq_packet_protocol.hpp +86 -0
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +3 -9
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -61
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +29 -105
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +21 -29
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +24 -34
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +1 -1
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +1 -1
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +1 -1
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +36 -34
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +176 -333
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/prepend.hpp +11 -23
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +57 -70
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/random_access_file.hpp +1 -1
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +136 -168
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +35 -52
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +256 -298
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/readable_pipe.hpp +1 -1
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/recycling_allocator.hpp +15 -15
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +7 -9
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +35 -47
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +108 -246
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +70 -79
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +1 -1
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +1 -1
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_base.hpp +173 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +1 -1
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +127 -161
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +1 -3
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +24 -24
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +3 -3
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +3 -7
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +3 -3
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +3 -7
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +16 -75
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -3
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +4 -4
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +15 -19
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -2
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -3
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +1 -1
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +2 -4
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +3 -3
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +1 -1
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +1 -1
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +1 -1
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +51 -82
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -1
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +1 -1
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -6
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +91 -118
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_file.hpp +1 -1
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +3 -3
  590. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +62 -62
  591. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -6
  592. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +35 -48
  593. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +91 -273
  594. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  595. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +14 -18
  596. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +16 -20
  597. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +16 -20
  598. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +16 -20
  599. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +16 -20
  600. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +16 -20
  601. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +15 -22
  602. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +16 -20
  603. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +16 -20
  604. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +16 -20
  605. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +16 -20
  606. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +20 -26
  607. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +22 -30
  608. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +22 -30
  609. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  610. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +1 -1
  611. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  612. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  613. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  614. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +6 -24
  615. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  616. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  617. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  618. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +15 -21
  619. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +8 -12
  620. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +2 -6
  621. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  622. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  623. data/src/cxx_supportlib/vendor-modified/boost/asio/writable_pipe.hpp +1 -1
  624. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +122 -146
  625. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +34 -50
  626. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  627. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -28
  628. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -3
  629. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +2 -16
  630. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +2 -3
  631. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +5 -3
  632. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +6 -4
  633. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +0 -49
  634. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +107 -40
  635. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +32 -5
  636. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +12 -13
  637. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +7 -8
  638. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +26 -27
  639. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +122 -35
  640. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +2 -3
  641. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +7 -0
  642. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +42 -0
  643. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +1 -2
  644. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +3 -4
  645. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +2 -3
  646. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +2 -3
  647. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +2 -60
  648. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +230 -1740
  649. data/src/cxx_supportlib/vendor-modified/boost/bind/{bind_cc.hpp → detail/bind_cc.hpp} +20 -20
  650. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf2_cc.hpp +210 -0
  651. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf_cc.hpp +405 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/integer_sequence.hpp +111 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +1 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/tuple_for_each.hpp +64 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +140 -290
  656. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +3 -16
  657. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +0 -279
  658. data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +0 -6
  659. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/is_evenly_divisible_by.hpp +1 -7
  661. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/requires_cxx11.hpp +23 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -1
  663. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +1 -1
  664. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +1 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +3 -3
  666. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +1 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  668. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +4 -1
  669. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  670. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +4 -1
  671. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
  672. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +41 -0
  673. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +8 -0
  675. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +8 -2
  676. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +5 -0
  677. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -1
  678. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +1 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +4 -0
  681. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +4 -2
  682. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +5 -0
  683. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +1 -0
  684. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -0
  685. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -0
  686. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -0
  687. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +4 -0
  688. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +4 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +13 -3
  691. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +8 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +16 -1
  694. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +56 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +32 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +16 -1
  697. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +6 -7
  698. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +18 -19
  699. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +27 -29
  700. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +0 -29
  701. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +144 -145
  702. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +4 -5
  703. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +48 -49
  704. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  705. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +14 -15
  706. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +22 -22
  707. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +1 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +71 -69
  709. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +48 -48
  710. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +38 -40
  711. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +165 -153
  712. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +162 -163
  713. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +1 -2
  714. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +48 -12
  715. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +6 -8
  716. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +44 -46
  717. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +10 -11
  718. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +18 -19
  719. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +0 -8
  720. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
  721. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +83 -84
  722. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +3 -3
  723. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +77 -1
  724. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +81 -85
  725. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +231 -233
  726. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +86 -86
  727. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -33
  728. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +107 -110
  729. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +9 -11
  730. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +10 -11
  731. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +29 -17
  732. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +2 -2
  733. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
  734. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  736. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +80 -82
  737. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +81 -81
  738. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +24 -26
  739. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +147 -122
  740. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +109 -110
  741. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +32 -32
  742. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +165 -194
  743. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +4 -5
  744. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +263 -199
  745. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_integral.hpp +146 -0
  746. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +6 -6
  747. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +296 -61
  748. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple_like.hpp +62 -0
  749. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/mulx.hpp +79 -0
  750. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +38 -124
  751. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +1 -0
  752. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +27 -20
  753. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +4 -5
  754. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +8 -40
  755. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_tuple_like.hpp +36 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +6 -7
  757. data/src/cxx_supportlib/vendor-modified/boost/core/alignof.hpp +57 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +22 -8
  759. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +362 -31
  760. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +29 -3
  761. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +46 -0
  762. data/src/cxx_supportlib/vendor-modified/boost/core/detail/is_same.hpp +39 -0
  763. data/src/cxx_supportlib/vendor-modified/boost/core/detail/lwt_unattended.hpp +66 -0
  764. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_pause.hpp +71 -0
  765. data/src/cxx_supportlib/vendor-modified/boost/{smart_ptr → core}/detail/sp_thread_sleep.hpp +39 -21
  766. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_yield.hpp +100 -0
  767. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +7 -7
  768. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +7 -0
  769. data/src/cxx_supportlib/vendor-modified/boost/core/functor.hpp +41 -0
  770. data/src/cxx_supportlib/vendor-modified/boost/core/identity.hpp +61 -0
  771. data/src/cxx_supportlib/vendor-modified/boost/core/invoke_swap.hpp +93 -0
  772. data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +10 -15
  773. data/src/cxx_supportlib/vendor-modified/boost/core/launder.hpp +69 -0
  774. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +33 -36
  775. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +3 -3
  776. data/src/cxx_supportlib/vendor-modified/boost/core/make_span.hpp +59 -0
  777. data/src/cxx_supportlib/vendor-modified/boost/core/max_align.hpp +82 -0
  778. data/src/cxx_supportlib/vendor-modified/boost/core/memory_resource.hpp +108 -0
  779. data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +7 -0
  780. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +23 -16
  781. data/src/cxx_supportlib/vendor-modified/boost/core/serialization.hpp +131 -0
  782. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +31 -0
  783. data/src/cxx_supportlib/vendor-modified/boost/core/snprintf.hpp +173 -0
  784. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +17 -17
  785. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +10 -40
  786. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +29 -5
  787. data/src/cxx_supportlib/vendor-modified/boost/core/yield_primitives.hpp +12 -0
  788. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +2 -0
  789. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -6
  790. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +6 -97
  791. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +1 -1
  792. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +1 -1
  793. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +1 -1
  794. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +22 -10
  795. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +1 -1
  796. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +1 -1
  797. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +24 -0
  798. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +1 -1
  799. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +4 -4
  800. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +1 -1
  801. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +1 -1
  802. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +1 -1
  803. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +2 -2
  804. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +1 -1
  805. data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +1 -3
  806. data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +1 -3
  807. data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +1 -3
  808. data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +1 -3
  809. data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +1 -3
  810. data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +1 -3
  811. data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +1 -3
  812. data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +1 -3
  813. data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +1 -3
  814. data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +1 -3
  815. data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +1 -3
  816. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +49 -198
  817. data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +36 -41
  818. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +277 -420
  819. data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +1 -31
  820. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +5 -61
  821. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +2 -2
  822. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +24 -25
  823. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +12 -13
  824. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +1 -1
  825. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +24 -25
  826. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +65 -66
  827. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +20 -20
  828. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +7 -7
  829. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +10 -10
  830. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +3 -3
  831. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +5 -5
  832. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +10 -10
  833. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +3 -3
  834. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +24 -24
  835. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +1 -1
  836. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +1 -1
  837. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +14 -15
  838. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +277 -0
  839. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +11 -49
  840. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_integral.hpp +119 -0
  841. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_mix.hpp +130 -0
  842. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +41 -41
  843. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +14 -20
  844. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +6 -6
  845. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +12 -12
  846. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +7 -7
  847. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +19 -19
  848. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +6 -0
  849. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +3 -3
  850. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +6 -17
  851. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  852. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +14 -14
  853. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +20 -20
  854. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +22 -22
  855. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +21 -21
  856. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +28 -28
  857. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +58 -1
  858. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +268 -239
  859. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +9 -9
  860. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +57 -58
  861. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +3 -3
  862. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
  863. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +3 -3
  864. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +12 -13
  865. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +24 -25
  866. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +24 -25
  867. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +14 -15
  868. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +1 -1
  869. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +61 -62
  870. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +24 -25
  871. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +12 -13
  872. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +18 -19
  873. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +4 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +36 -37
  875. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -34
  876. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +11 -11
  877. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +2 -2
  878. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +10 -11
  879. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +148 -0
  880. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +2 -2
  881. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +7 -13
  882. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +59 -0
  883. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +113 -131
  884. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +612 -645
  885. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +85 -79
  886. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +25 -32
  887. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +22 -29
  888. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +73 -0
  889. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  890. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +21 -16
  891. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +7 -9
  892. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +22 -161
  893. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +9 -12
  894. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +4 -2
  895. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +3 -1
  896. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +3 -1
  897. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +10 -18
  898. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +13 -14
  899. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +24 -14
  900. data/src/cxx_supportlib/vendor-modified/boost/limits.hpp +12 -12
  901. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +5 -5
  902. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +5 -3
  903. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +20 -19
  904. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +41 -56
  905. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +11 -10
  906. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +3 -2
  907. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +32 -34
  908. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +4 -5
  909. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +11 -11
  910. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +0 -1
  911. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +3 -3
  912. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +5 -6
  913. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  914. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -2
  915. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  916. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +65 -24
  917. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +28 -28
  918. data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +1 -1
  919. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +72 -23
  920. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +81 -1
  921. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +22 -22
  922. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +65 -66
  923. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +2 -2
  924. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +8 -6
  925. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +97 -17
  926. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +9 -0
  927. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/config.hpp +11 -0
  928. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_append.hpp +140 -4
  929. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_defer.hpp +119 -0
  930. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +108 -4
  931. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_front.hpp +13 -1
  932. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_value_list.hpp +41 -0
  933. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list_v.hpp +27 -0
  934. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +1 -1
  935. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_plus.hpp +4 -1
  936. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_rename.hpp +18 -5
  937. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_value.hpp +25 -0
  938. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +9 -0
  939. data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +10 -0
  940. data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +180 -3
  941. data/src/cxx_supportlib/vendor-modified/boost/mp11/utility.hpp +2 -96
  942. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  943. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +3 -3
  944. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +3 -44
  945. data/src/cxx_supportlib/vendor-modified/boost/nondet_random.hpp +22 -0
  946. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +8 -0
  947. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +5 -4
  948. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +3 -3
  949. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +2 -2
  950. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
  951. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +6 -6
  952. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
  953. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +4 -4
  954. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +2 -2
  955. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +1 -1
  956. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +1 -1
  957. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +4 -4
  958. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +1 -1
  959. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +1 -1
  960. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +3 -3
  961. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +1 -1
  962. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +1 -1
  963. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +3 -3
  964. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  965. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +13 -0
  966. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msvc.h +53 -0
  967. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +1 -0
  968. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  969. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +1 -1
  970. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  971. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +2 -0
  972. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +1 -1
  973. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +203 -0
  974. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +14 -14
  975. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +2 -2
  976. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +1 -0
  977. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +4 -82
  978. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/gcd_lcm.hpp +53 -0
  979. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_evenly_divisible_by.hpp +32 -0
  980. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_ratio.hpp +28 -0
  981. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +1 -3
  982. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +5 -249
  983. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +30 -56
  984. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +0 -533
  985. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -7
  986. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +9 -9
  987. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +7 -7
  988. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +1 -0
  989. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +23 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +1 -1
  991. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +4 -6
  992. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +1 -0
  993. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +2 -11
  994. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -0
  995. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +1 -0
  996. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +1 -0
  997. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +70 -0
  998. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +1 -0
  999. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +1 -0
  1000. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +2 -0
  1001. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -11
  1002. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +1 -0
  1003. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +4 -8
  1004. data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +3 -12
  1005. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +14 -50
  1006. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +16 -55
  1007. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +62 -124
  1008. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +29 -52
  1009. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +7 -7
  1010. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +4 -4
  1011. data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +7 -7
  1012. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +3 -13
  1013. data/src/cxx_supportlib/vendor-modified/boost/system/detail/mutex.hpp +128 -0
  1014. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +1 -46
  1015. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +14 -13
  1016. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +2 -2
  1017. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +7 -7
  1018. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +3 -3
  1019. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +2 -2
  1020. data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +3 -3
  1021. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +1 -1
  1022. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +1 -24
  1023. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +1 -14
  1024. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +1 -14
  1025. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +2 -12
  1026. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +0 -11
  1027. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +0 -2
  1028. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +0 -16
  1029. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +0 -11
  1030. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +0 -11
  1031. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +0 -19
  1032. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +4 -6
  1033. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -26
  1034. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +1 -18
  1035. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +1 -14
  1036. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +11 -4
  1037. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_to_unsigned.hpp +55 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_trim.hpp +29 -0
  1039. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +5 -5
  1040. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +0 -1
  1041. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +3 -2
  1042. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +4 -4
  1043. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +2 -2
  1044. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +3 -3
  1045. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -1
  1046. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_swappable_cxx_11.hpp +70 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +22 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +4 -24
  1050. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_swappable.hpp +92 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +2 -3
  1052. data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +1 -10
  1053. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -6
  1054. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +2 -4
  1055. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +2 -4
  1056. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +2 -5
  1057. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +2 -15
  1058. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +4 -51
  1059. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +2 -6
  1060. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +2 -9
  1061. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +2 -46
  1062. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +2 -5
  1063. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +2 -29
  1064. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +2 -9
  1065. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +4 -9
  1066. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +2 -6
  1067. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +2 -5
  1068. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +2 -9
  1069. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +2 -19
  1070. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +2 -5
  1071. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +2 -5
  1072. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +2 -12
  1073. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +2 -4
  1074. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +2 -10
  1075. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +2 -5
  1076. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +8 -202
  1077. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +860 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +51 -0
  1079. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +716 -0
  1080. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +52 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocator_constructed.hpp +59 -0
  1082. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/archive_constructed.hpp +71 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/bad_archive_exception.hpp +27 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +105 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +120 -85
  1086. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +1764 -0
  1087. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2271 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/element_type.hpp +64 -0
  1089. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +86 -0
  1090. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_set_types.hpp +44 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/ignore_wshadow.hpp +35 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +204 -0
  1093. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +139 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +92 -0
  1095. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/reentrancy_check.hpp +138 -0
  1096. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/restore_wshadow.hpp +11 -0
  1097. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/rw_spinlock.hpp +179 -0
  1098. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +651 -0
  1099. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/tuple_rotate_right.hpp +52 -0
  1100. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +356 -1118
  1101. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +2 -0
  1102. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/mulx.hpp +129 -0
  1103. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/narrow_cast.hpp +44 -0
  1104. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/opt_storage.hpp +30 -0
  1105. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +96 -150
  1106. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialization_version.hpp +74 -0
  1107. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_container.hpp +204 -0
  1108. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_fca_container.hpp +156 -0
  1109. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_tracked_address.hpp +104 -0
  1110. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/static_assert.hpp +16 -0
  1111. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/throw_exception.hpp +30 -0
  1112. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +136 -19
  1113. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +4 -5
  1114. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +171 -103
  1115. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +1 -6
  1116. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +70 -46
  1117. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +1 -6
  1118. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +406 -899
  1119. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +7 -13
  1120. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +895 -0
  1121. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +44 -0
  1122. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +699 -0
  1123. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +44 -0
  1124. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +253 -618
  1125. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +8 -14
  1126. data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +4 -1
  1127. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +8 -8
  1128. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1129. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +2 -9
  1130. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +0 -11
  1131. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +14 -20
  1132. data/src/helper-scripts/wsgi-loader.py +2 -2
  1133. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +2 -2
  1134. data/src/ruby_supportlib/phusion_passenger/common_library.rb +16 -5
  1135. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +1 -1
  1136. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +3 -1
  1137. data/src/ruby_supportlib/phusion_passenger/native_support.rb +10 -7
  1138. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +8 -10
  1139. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +14 -0
  1140. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +4 -1
  1141. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +6 -6
  1142. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +11 -12
  1143. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -1
  1144. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +4 -0
  1145. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +5 -1
  1146. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  1147. metadata +109 -150
  1148. data/src/cxx_supportlib/ServerKit/http_parser.cpp +0 -2265
  1149. data/src/cxx_supportlib/ServerKit/http_parser.h +0 -330
  1150. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +0 -456
  1151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +0 -90
  1152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +0 -93
  1153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +0 -70
  1154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +0 -67
  1155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +0 -101
  1156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +0 -80
  1157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +0 -64
  1158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +0 -216
  1159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +0 -64
  1160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +0 -294
  1161. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +0 -406
  1162. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +0 -1254
  1163. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +0 -498
  1164. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +0 -154
  1165. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +0 -111
  1166. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +0 -130
  1167. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +0 -263
  1168. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +0 -235
  1169. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +0 -92
  1170. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +0 -296
  1171. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +0 -38
  1172. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +0 -101
  1173. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +0 -287
  1174. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +0 -50
  1175. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +0 -296
  1176. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +0 -93
  1177. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +0 -318
  1178. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +0 -259
  1179. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +0 -259
  1180. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +0 -492
  1181. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +0 -256
  1182. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +0 -459
  1183. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +0 -106
  1184. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +0 -113
  1185. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +0 -300
  1186. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +0 -275
  1187. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +0 -64
  1188. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +0 -300
  1189. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +0 -116
  1190. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +0 -116
  1191. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +0 -114
  1192. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +0 -114
  1193. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +0 -110
  1194. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +0 -110
  1195. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +0 -110
  1196. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +0 -110
  1197. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +0 -110
  1198. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +0 -114
  1199. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +0 -114
  1200. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +0 -236
  1201. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +0 -236
  1202. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +0 -110
  1203. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +0 -110
  1204. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +0 -114
  1205. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +0 -114
  1206. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +0 -495
  1207. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +0 -462
  1208. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +0 -581
  1209. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +0 -563
  1210. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +0 -40
  1211. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +0 -41
  1212. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +0 -147
  1213. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +0 -39
  1214. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +0 -39
  1215. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +0 -201
  1216. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +0 -67
  1217. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +0 -57
  1218. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +0 -179
  1219. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +0 -228
  1220. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +0 -441
  1221. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +0 -345
  1222. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +0 -103
  1223. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_template.hpp +0 -1047
  1224. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +0 -130
  1225. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +0 -475
  1226. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +0 -71
  1227. data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +0 -1278
  1228. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +0 -133
  1229. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1230. data/src/cxx_supportlib/vendor-modified/boost/function/detail/function_iterate.hpp +0 -16
  1231. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +0 -39
  1232. data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +0 -369
  1233. data/src/cxx_supportlib/vendor-modified/boost/function/detail/prologue.hpp +0 -26
  1234. data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +0 -26
  1235. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +0 -6
  1236. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +0 -89
  1237. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +0 -124
  1238. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +0 -126
  1239. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +0 -89
  1240. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +0 -367
  1241. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +0 -1342
  1242. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +0 -30
  1243. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +0 -22
  1244. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +0 -19
  1245. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +0 -30
  1246. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +0 -30
  1247. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +0 -30
  1248. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +0 -30
  1249. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +0 -30
  1250. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +0 -30
  1251. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +0 -30
  1252. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +0 -30
  1253. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +0 -30
  1254. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +0 -30
  1255. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +0 -30
  1256. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +0 -31
  1257. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +0 -30
  1258. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +0 -25
  1259. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +0 -15
  1260. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +0 -30
  1261. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +0 -30
  1262. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +0 -51
  1263. data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +0 -17
  1264. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +0 -278
  1265. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +0 -297
  1266. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +0 -265
  1267. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +0 -100
  1268. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -58
  1269. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +0 -34
  1270. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +0 -118
  1271. data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +0 -80
  1272. data/src/cxx_supportlib/vendor-modified/boost/typeof/message.hpp +0 -8
  1273. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +0 -121
  1274. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +0 -60
  1275. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +0 -38
  1276. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +0 -50
  1277. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +0 -135
  1278. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +0 -61
  1279. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +0 -32
  1280. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +0 -160
  1281. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +0 -149
  1282. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +0 -27
  1283. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +0 -37
  1284. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +0 -187
  1285. data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +0 -29
  1286. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +0 -166
  1287. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +0 -321
  1288. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +0 -471
  1289. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +0 -621
  1290. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +0 -171
  1291. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +0 -1921
  1292. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +0 -64
  1293. /data/dev/{webpacketpp.patch → websocketpp.patch} +0 -0
@@ -1,7 +1,7 @@
1
-
2
1
  // Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
3
2
  // Copyright (C) 2005-2011 Daniel James.
4
- // Copyright (C) 2022 Christian Mazakas
3
+ // Copyright (C) 2022-2023 Christian Mazakas
4
+ // Copyright (C) 2024 Joaquin M Lopez Munoz.
5
5
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
6
6
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7
7
 
@@ -15,16 +15,14 @@
15
15
  #pragma once
16
16
  #endif
17
17
 
18
- #include <boost/core/explicit_operator_bool.hpp>
19
- #include <boost/functional/hash.hpp>
20
- #include <boost/move/move.hpp>
21
- #include <boost/type_traits/is_constructible.hpp>
22
18
  #include <boost/unordered/detail/map.hpp>
19
+ #include <boost/unordered/detail/serialize_fca_container.hpp>
20
+ #include <boost/unordered/detail/throw_exception.hpp>
23
21
  #include <boost/unordered/detail/type_traits.hpp>
24
22
 
25
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
23
+ #include <boost/container_hash/hash.hpp>
24
+
26
25
  #include <initializer_list>
27
- #endif
28
26
 
29
27
  #if defined(BOOST_MSVC)
30
28
  #pragma warning(push)
@@ -41,9 +39,6 @@ namespace boost {
41
39
  namespace unordered {
42
40
  template <class K, class T, class H, class P, class A> class unordered_map
43
41
  {
44
- #if defined(BOOST_UNORDERED_USE_MOVE)
45
- BOOST_COPYABLE_AND_MOVABLE(unordered_map)
46
- #endif
47
42
  template <typename, typename, typename, typename, typename>
48
43
  friend class unordered_multimap;
49
44
 
@@ -51,9 +46,11 @@ namespace boost {
51
46
  typedef K key_type;
52
47
  typedef T mapped_type;
53
48
  typedef std::pair<const K, T> value_type;
54
- typedef typename boost::type_identity<H>::type hasher;
55
- typedef typename boost::type_identity<P>::type key_equal;
56
- typedef typename boost::type_identity<A>::type allocator_type;
49
+ typedef typename boost::unordered::detail::type_identity<H>::type hasher;
50
+ typedef
51
+ typename boost::unordered::detail::type_identity<P>::type key_equal;
52
+ typedef typename boost::unordered::detail::type_identity<A>::type
53
+ allocator_type;
57
54
 
58
55
  private:
59
56
  typedef boost::unordered::detail::map<A, K, T, H, P> types;
@@ -97,28 +94,23 @@ namespace boost {
97
94
 
98
95
  unordered_map(unordered_map const&);
99
96
 
100
- #if defined(BOOST_UNORDERED_USE_MOVE) || \
101
- !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
102
- unordered_map(BOOST_RV_REF(unordered_map) other)
103
- BOOST_NOEXCEPT_IF(table::nothrow_move_constructible)
97
+ unordered_map(unordered_map&& other)
98
+ noexcept(table::nothrow_move_constructible)
104
99
  : table_(other.table_, boost::unordered::detail::move_tag())
105
100
  {
106
101
  // The move is done in table_
107
102
  }
108
- #endif
109
103
 
110
104
  explicit unordered_map(allocator_type const&);
111
105
 
112
106
  unordered_map(unordered_map const&, allocator_type const&);
113
107
 
114
- unordered_map(BOOST_RV_REF(unordered_map), allocator_type const&);
108
+ unordered_map(unordered_map&&, allocator_type const&);
115
109
 
116
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
117
110
  unordered_map(std::initializer_list<value_type>,
118
111
  size_type = boost::unordered::detail::default_bucket_count,
119
112
  const hasher& = hasher(), const key_equal& l = key_equal(),
120
113
  const allocator_type& = allocator_type());
121
- #endif
122
114
 
123
115
  explicit unordered_map(size_type, const allocator_type&);
124
116
 
@@ -134,7 +126,6 @@ namespace boost {
134
126
  unordered_map(
135
127
  InputIt, InputIt, size_type, const hasher&, const allocator_type&);
136
128
 
137
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
138
129
  unordered_map(std::initializer_list<value_type>, const allocator_type&);
139
130
 
140
131
  unordered_map(
@@ -142,262 +133,99 @@ namespace boost {
142
133
 
143
134
  unordered_map(std::initializer_list<value_type>, size_type, const hasher&,
144
135
  const allocator_type&);
145
- #endif
146
136
 
147
137
  // Destructor
148
138
 
149
- ~unordered_map() BOOST_NOEXCEPT;
139
+ ~unordered_map() noexcept;
150
140
 
151
- // Assign
141
+ // Assign
152
142
 
153
- #if defined(BOOST_UNORDERED_USE_MOVE)
154
- unordered_map& operator=(BOOST_COPY_ASSIGN_REF(unordered_map) x)
155
- {
156
- table_.assign(x.table_, boost::unordered::detail::true_type());
157
- return *this;
158
- }
159
-
160
- unordered_map& operator=(BOOST_RV_REF(unordered_map) x)
161
- BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
162
- boost::is_nothrow_move_assignable<H>::value&&
163
- boost::is_nothrow_move_assignable<P>::value)
164
- {
165
- table_.move_assign(x.table_, boost::unordered::detail::true_type());
166
- return *this;
167
- }
168
- #else
169
143
  unordered_map& operator=(unordered_map const& x)
170
144
  {
171
- table_.assign(x.table_, boost::unordered::detail::true_type());
145
+ table_.assign(x.table_, std::true_type());
172
146
  return *this;
173
147
  }
174
148
 
175
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
176
149
  unordered_map& operator=(unordered_map&& x)
177
- BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
178
- boost::is_nothrow_move_assignable<H>::value&&
179
- boost::is_nothrow_move_assignable<P>::value)
150
+ noexcept(value_allocator_traits::is_always_equal::value&&
151
+ std::is_nothrow_move_assignable<H>::value&&
152
+ std::is_nothrow_move_assignable<P>::value)
180
153
  {
181
- table_.move_assign(x.table_, boost::unordered::detail::true_type());
154
+ table_.move_assign(x.table_, std::true_type());
182
155
  return *this;
183
156
  }
184
- #endif
185
- #endif
186
157
 
187
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
188
158
  unordered_map& operator=(std::initializer_list<value_type>);
189
- #endif
190
159
 
191
- allocator_type get_allocator() const BOOST_NOEXCEPT
160
+ allocator_type get_allocator() const noexcept
192
161
  {
193
- return table_.node_alloc();
162
+ return allocator_type(table_.node_alloc());
194
163
  }
195
164
 
196
- // // iterators
165
+ // // iterators
197
166
 
198
- iterator begin() BOOST_NOEXCEPT { return table_.begin(); }
167
+ iterator begin() noexcept { return table_.begin(); }
199
168
 
200
- const_iterator begin() const BOOST_NOEXCEPT
169
+ const_iterator begin() const noexcept
201
170
  {
202
171
  return const_iterator(table_.begin());
203
172
  }
204
173
 
205
- iterator end() BOOST_NOEXCEPT { return iterator(); }
174
+ iterator end() noexcept { return iterator(); }
206
175
 
207
- const_iterator end() const BOOST_NOEXCEPT { return const_iterator(); }
176
+ const_iterator end() const noexcept { return const_iterator(); }
208
177
 
209
- const_iterator cbegin() const BOOST_NOEXCEPT
178
+ const_iterator cbegin() const noexcept
210
179
  {
211
180
  return const_iterator(table_.begin());
212
181
  }
213
182
 
214
- const_iterator cend() const BOOST_NOEXCEPT { return const_iterator(); }
183
+ const_iterator cend() const noexcept { return const_iterator(); }
215
184
 
216
185
  // size and capacity
217
186
 
218
- BOOST_ATTRIBUTE_NODISCARD bool empty() const BOOST_NOEXCEPT
187
+ BOOST_ATTRIBUTE_NODISCARD bool empty() const noexcept
219
188
  {
220
189
  return table_.size_ == 0;
221
190
  }
222
191
 
223
- size_type size() const BOOST_NOEXCEPT { return table_.size_; }
224
-
225
- size_type max_size() const BOOST_NOEXCEPT;
192
+ size_type size() const noexcept { return table_.size_; }
226
193
 
227
- // emplace
194
+ size_type max_size() const noexcept;
228
195
 
229
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
196
+ // emplace
230
197
 
231
- template <class... Args>
232
- std::pair<iterator, bool> emplace(BOOST_FWD_REF(Args)... args)
198
+ template <class... Args> std::pair<iterator, bool> emplace(Args&&... args)
233
199
  {
234
200
  return table_.emplace_unique(
235
- table::extractor::extract(boost::forward<Args>(args)...),
236
- boost::forward<Args>(args)...);
201
+ table::extractor::extract(std::forward<Args>(args)...),
202
+ std::forward<Args>(args)...);
237
203
  }
238
204
 
239
- #else
240
-
241
- #if !BOOST_UNORDERED_SUN_WORKAROUNDS1
242
-
243
- // 0 argument emplace requires special treatment in case
244
- // the container is instantiated with a value type that
245
- // doesn't have a default constructor.
246
-
247
- std::pair<iterator, bool> emplace(
248
- boost::unordered::detail::empty_emplace =
249
- boost::unordered::detail::empty_emplace(),
250
- value_type v = value_type())
251
- {
252
- return this->emplace(boost::move(v));
253
- }
254
-
255
- #endif
256
-
257
- template <typename A0>
258
- std::pair<iterator, bool> emplace(BOOST_FWD_REF(A0) a0)
259
- {
260
- return table_.emplace_unique(
261
- table::extractor::extract(boost::forward<A0>(a0)),
262
- boost::unordered::detail::create_emplace_args(
263
- boost::forward<A0>(a0)));
264
- }
265
-
266
- template <typename A0, typename A1>
267
- std::pair<iterator, bool> emplace(
268
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
269
- {
270
- return table_.emplace_unique(
271
- table::extractor::extract(
272
- boost::forward<A0>(a0), boost::forward<A1>(a1)),
273
- boost::unordered::detail::create_emplace_args(
274
- boost::forward<A0>(a0), boost::forward<A1>(a1)));
275
- }
276
-
277
- template <typename A0, typename A1, typename A2>
278
- std::pair<iterator, bool> emplace(
279
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
280
- {
281
- return table_.emplace_unique(
282
- table::extractor::extract(
283
- boost::forward<A0>(a0), boost::forward<A1>(a1)),
284
- boost::unordered::detail::create_emplace_args(boost::forward<A0>(a0),
285
- boost::forward<A1>(a1), boost::forward<A2>(a2)));
286
- }
287
-
288
- #endif
289
-
290
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
291
-
292
205
  template <class... Args>
293
- iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(Args)... args)
294
- {
295
- return table_.emplace_hint_unique(hint,
296
- table::extractor::extract(boost::forward<Args>(args)...),
297
- boost::forward<Args>(args)...);
298
- }
299
-
300
- #else
301
-
302
- #if !BOOST_UNORDERED_SUN_WORKAROUNDS1
303
-
304
- iterator emplace_hint(const_iterator hint,
305
- boost::unordered::detail::empty_emplace =
306
- boost::unordered::detail::empty_emplace(),
307
- value_type v = value_type())
308
- {
309
- return this->emplace_hint(hint, boost::move(v));
310
- }
311
-
312
- #endif
313
-
314
- template <typename A0>
315
- iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(A0) a0)
316
- {
317
- return table_.emplace_hint_unique(hint,
318
- table::extractor::extract(boost::forward<A0>(a0)),
319
- boost::unordered::detail::create_emplace_args(
320
- boost::forward<A0>(a0)));
321
- }
322
-
323
- template <typename A0, typename A1>
324
- iterator emplace_hint(
325
- const_iterator hint, BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
326
- {
327
- return table_.emplace_hint_unique(hint,
328
- table::extractor::extract(
329
- boost::forward<A0>(a0), boost::forward<A1>(a1)),
330
- boost::unordered::detail::create_emplace_args(
331
- boost::forward<A0>(a0), boost::forward<A1>(a1)));
332
- }
333
-
334
- template <typename A0, typename A1, typename A2>
335
- iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(A0) a0,
336
- BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
206
+ iterator emplace_hint(const_iterator hint, Args&&... args)
337
207
  {
338
208
  return table_.emplace_hint_unique(hint,
339
- table::extractor::extract(
340
- boost::forward<A0>(a0), boost::forward<A1>(a1)),
341
- boost::unordered::detail::create_emplace_args(boost::forward<A0>(a0),
342
- boost::forward<A1>(a1), boost::forward<A2>(a2)));
209
+ table::extractor::extract(std::forward<Args>(args)...),
210
+ std::forward<Args>(args)...);
343
211
  }
344
212
 
345
- #endif
346
-
347
- #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
348
-
349
- #define BOOST_UNORDERED_EMPLACE(z, n, _) \
350
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
351
- std::pair<iterator, bool> emplace( \
352
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
353
- { \
354
- return table_.emplace_unique( \
355
- table::extractor::extract( \
356
- boost::forward<A0>(a0), boost::forward<A1>(a1)), \
357
- boost::unordered::detail::create_emplace_args( \
358
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))); \
359
- } \
360
- \
361
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
362
- iterator emplace_hint( \
363
- const_iterator hint, BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
364
- { \
365
- return table_.emplace_hint_unique(hint, \
366
- table::extractor::extract( \
367
- boost::forward<A0>(a0), boost::forward<A1>(a1)), \
368
- boost::unordered::detail::create_emplace_args( \
369
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))); \
370
- }
371
-
372
- BOOST_UNORDERED_EMPLACE(1, 4, _)
373
- BOOST_UNORDERED_EMPLACE(1, 5, _)
374
- BOOST_UNORDERED_EMPLACE(1, 6, _)
375
- BOOST_UNORDERED_EMPLACE(1, 7, _)
376
- BOOST_UNORDERED_EMPLACE(1, 8, _)
377
- BOOST_UNORDERED_EMPLACE(1, 9, _)
378
- BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
379
- BOOST_UNORDERED_EMPLACE, _)
380
-
381
- #undef BOOST_UNORDERED_EMPLACE
382
-
383
- #endif
384
-
385
213
  std::pair<iterator, bool> insert(value_type const& x)
386
214
  {
387
215
  return this->emplace(x);
388
216
  }
389
217
 
390
- std::pair<iterator, bool> insert(BOOST_RV_REF(value_type) x)
218
+ std::pair<iterator, bool> insert(value_type&& x)
391
219
  {
392
- return this->emplace(boost::move(x));
220
+ return this->emplace(std::move(x));
393
221
  }
394
222
 
395
223
  template <class P2>
396
- typename boost::enable_if<
397
- boost::is_constructible<value_type, BOOST_RV_REF(P2)>,
398
- std::pair<iterator, bool> >::type insert(BOOST_RV_REF(P2) obj)
224
+ typename boost::enable_if<std::is_constructible<value_type, P2&&>,
225
+ std::pair<iterator, bool> >::type
226
+ insert(P2&& obj)
399
227
  {
400
- return this->emplace(boost::forward<P2>(obj));
228
+ return this->emplace(std::forward<P2>(obj));
401
229
  }
402
230
 
403
231
  iterator insert(const_iterator hint, value_type const& x)
@@ -405,320 +233,153 @@ namespace boost {
405
233
  return this->emplace_hint(hint, x);
406
234
  }
407
235
 
408
- iterator insert(const_iterator hint, BOOST_RV_REF(value_type) x)
236
+ iterator insert(const_iterator hint, value_type&& x)
409
237
  {
410
- return this->emplace_hint(hint, boost::move(x));
238
+ return this->emplace_hint(hint, std::move(x));
411
239
  }
412
240
 
413
241
  template <class P2>
414
- typename boost::enable_if<
415
- boost::is_constructible<value_type, BOOST_RV_REF(P2)>, iterator>::type
416
- insert(const_iterator hint, BOOST_RV_REF(P2) obj)
242
+ typename boost::enable_if<std::is_constructible<value_type, P2&&>,
243
+ iterator>::type
244
+ insert(const_iterator hint, P2&& obj)
417
245
  {
418
- return this->emplace_hint(hint, boost::forward<P2>(obj));
246
+ return this->emplace_hint(hint, std::forward<P2>(obj));
419
247
  }
420
248
 
421
249
  template <class InputIt> void insert(InputIt, InputIt);
422
250
 
423
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
424
251
  void insert(std::initializer_list<value_type>);
425
- #endif
426
252
 
427
253
  // extract
428
254
 
429
255
  node_type extract(const_iterator position)
430
256
  {
431
257
  return node_type(
432
- table_.extract_by_iterator_unique(position), table_.node_alloc());
258
+ table_.extract_by_iterator_unique(position),
259
+ allocator_type(table_.node_alloc()));
433
260
  }
434
261
 
435
262
  node_type extract(const key_type& k)
436
263
  {
437
- return node_type(table_.extract_by_key_impl(k), table_.node_alloc());
264
+ return node_type(
265
+ table_.extract_by_key_impl(k),
266
+ allocator_type(table_.node_alloc()));
438
267
  }
439
268
 
440
269
  template <class Key>
441
270
  typename boost::enable_if_c<
442
271
  detail::transparent_non_iterable<Key, unordered_map>::value,
443
272
  node_type>::type
444
- extract(BOOST_FWD_REF(Key) k)
273
+ extract(Key&& k)
445
274
  {
446
- return node_type(table_.extract_by_key_impl(boost::forward<Key>(k)),
447
- table_.node_alloc());
275
+ return node_type(
276
+ table_.extract_by_key_impl(std::forward<Key>(k)),
277
+ allocator_type(table_.node_alloc()));
448
278
  }
449
279
 
450
- insert_return_type insert(BOOST_RV_REF(node_type) np)
280
+ insert_return_type insert(node_type&& np)
451
281
  {
452
282
  insert_return_type result;
453
283
  table_.move_insert_node_type_unique((node_type&)np, result);
454
- return boost::move(result);
284
+ return result;
455
285
  }
456
286
 
457
- iterator insert(const_iterator hint, BOOST_RV_REF(node_type) np)
287
+ iterator insert(const_iterator hint, node_type&& np)
458
288
  {
459
289
  return table_.move_insert_node_type_with_hint_unique(hint, np);
460
290
  }
461
291
 
462
- #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
463
- (BOOST_COMP_GNUC && BOOST_COMP_GNUC < BOOST_VERSION_NUMBER(4, 6, 0))
464
- private:
465
- // Note: Use r-value node_type to insert.
466
- insert_return_type insert(node_type&);
467
- iterator insert(const_iterator, node_type& np);
468
-
469
- public:
470
- #endif
471
-
472
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
473
-
474
292
  template <class... Args>
475
- std::pair<iterator, bool> try_emplace(
476
- key_type const& k, BOOST_FWD_REF(Args)... args)
293
+ std::pair<iterator, bool> try_emplace(key_type const& k, Args&&... args)
477
294
  {
478
- return table_.try_emplace_unique(k, boost::forward<Args>(args)...);
295
+ return table_.try_emplace_unique(k, std::forward<Args>(args)...);
479
296
  }
480
297
 
481
298
  template <class... Args>
482
- std::pair<iterator, bool> try_emplace(
483
- BOOST_RV_REF(key_type) k, BOOST_FWD_REF(Args)... args)
299
+ std::pair<iterator, bool> try_emplace(key_type&& k, Args&&... args)
484
300
  {
485
301
  return table_.try_emplace_unique(
486
- boost::move(k), boost::forward<Args>(args)...);
302
+ std::move(k), std::forward<Args>(args)...);
487
303
  }
488
304
 
489
- template <class... Args>
490
- iterator try_emplace(
491
- const_iterator hint, key_type const& k, BOOST_FWD_REF(Args)... args)
305
+ template <class Key, class... Args>
306
+ typename boost::enable_if_c<
307
+ detail::transparent_non_iterable<Key, unordered_map>::value,
308
+ std::pair<iterator, bool> >::type
309
+ try_emplace(Key&& k, Args&&... args)
492
310
  {
493
- return table_.try_emplace_hint_unique(
494
- hint, k, boost::forward<Args>(args)...);
311
+ return table_.try_emplace_unique(
312
+ std::forward<Key>(k), std::forward<Args>(args)...);
495
313
  }
496
314
 
497
315
  template <class... Args>
498
- iterator try_emplace(const_iterator hint, BOOST_RV_REF(key_type) k,
499
- BOOST_FWD_REF(Args)... args)
316
+ iterator try_emplace(
317
+ const_iterator hint, key_type const& k, Args&&... args)
500
318
  {
501
319
  return table_.try_emplace_hint_unique(
502
- hint, boost::move(k), boost::forward<Args>(args)...);
320
+ hint, k, std::forward<Args>(args)...);
503
321
  }
504
322
 
505
- #else
506
-
507
- // In order to make this a template, this handles both:
508
- // try_emplace(key const&)
509
- // try_emplace(key&&)
510
-
511
- template <typename Key>
512
- std::pair<iterator, bool> try_emplace(BOOST_FWD_REF(Key) k)
513
- {
514
- return table_.try_emplace_unique(boost::forward<Key>(k));
515
- }
516
-
517
- // In order to make this a template, this handles both:
518
- // try_emplace(const_iterator hint, key const&)
519
- // try_emplace(const_iterator hint, key&&)
520
-
521
- template <typename Key>
522
- iterator try_emplace(const_iterator hint, BOOST_FWD_REF(Key) k)
523
- {
524
- return table_.try_emplace_hint_unique(hint, boost::forward<Key>(k));
525
- }
526
-
527
- // try_emplace(key const&, Args&&...)
528
-
529
- template <typename A0>
530
- std::pair<iterator, bool> try_emplace(
531
- key_type const& k, BOOST_FWD_REF(A0) a0)
532
- {
533
- return table_.try_emplace_unique(
534
- k, boost::unordered::detail::create_emplace_args(
535
- boost::forward<A0>(a0)));
536
- }
537
-
538
- template <typename A0, typename A1>
539
- std::pair<iterator, bool> try_emplace(
540
- key_type const& k, BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
541
- {
542
- return table_.try_emplace_unique(
543
- k, boost::unordered::detail::create_emplace_args(
544
- boost::forward<A0>(a0), boost::forward<A1>(a1)));
545
- }
546
-
547
- template <typename A0, typename A1, typename A2>
548
- std::pair<iterator, bool> try_emplace(key_type const& k,
549
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
550
- {
551
- return table_.try_emplace_unique(k,
552
- boost::unordered::detail::create_emplace_args(boost::forward<A0>(a0),
553
- boost::forward<A1>(a1), boost::forward<A2>(a2)));
554
- }
555
-
556
- // try_emplace(key&&, Args&&...)
557
-
558
- template <typename A0>
559
- std::pair<iterator, bool> try_emplace(
560
- BOOST_RV_REF(key_type) k, BOOST_FWD_REF(A0) a0)
561
- {
562
- return table_.try_emplace_unique(
563
- boost::move(k), boost::unordered::detail::create_emplace_args(
564
- boost::forward<A0>(a0)));
565
- }
566
-
567
- template <typename A0, typename A1>
568
- std::pair<iterator, bool> try_emplace(
569
- BOOST_RV_REF(key_type) k, BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
570
- {
571
- return table_.try_emplace_unique(
572
- boost::move(k), boost::unordered::detail::create_emplace_args(
573
- boost::forward<A0>(a0), boost::forward<A1>(a1)));
574
- }
575
-
576
- template <typename A0, typename A1, typename A2>
577
- std::pair<iterator, bool> try_emplace(BOOST_RV_REF(key_type) k,
578
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
579
- {
580
- return table_.try_emplace_unique(boost::move(k),
581
- boost::unordered::detail::create_emplace_args(boost::forward<A0>(a0),
582
- boost::forward<A1>(a1), boost::forward<A2>(a2)));
583
- }
584
-
585
- // try_emplace(const_iterator hint, key const&, Args&&...)
586
-
587
- template <typename A0>
588
- iterator try_emplace(
589
- const_iterator hint, key_type const& k, BOOST_FWD_REF(A0) a0)
323
+ template <class... Args>
324
+ iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args)
590
325
  {
591
326
  return table_.try_emplace_hint_unique(
592
- hint, k, boost::unordered::detail::create_emplace_args(
593
- boost::forward<A0>(a0)));
327
+ hint, std::move(k), std::forward<Args>(args)...);
594
328
  }
595
329
 
596
- template <typename A0, typename A1>
597
- iterator try_emplace(const_iterator hint, key_type const& k,
598
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
330
+ template <class Key, class... Args>
331
+ typename boost::enable_if_c<
332
+ detail::transparent_non_iterable<Key, unordered_map>::value,
333
+ iterator>::type
334
+ try_emplace(const_iterator hint, Key&& k, Args&&... args)
599
335
  {
600
336
  return table_.try_emplace_hint_unique(
601
- hint, k, boost::unordered::detail::create_emplace_args(
602
- boost::forward<A0>(a0), boost::forward<A1>(a1)));
337
+ hint, std::forward<Key>(k), std::forward<Args>(args)...);
603
338
  }
604
339
 
605
- template <typename A0, typename A1, typename A2>
606
- iterator try_emplace(const_iterator hint, key_type const& k,
607
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
340
+ template <class M>
341
+ std::pair<iterator, bool> insert_or_assign(key_type const& k, M&& obj)
608
342
  {
609
- return table_.try_emplace_hint_unique(hint, k,
610
- boost::unordered::detail::create_emplace_args(boost::forward<A0>(a0),
611
- boost::forward<A1>(a1), boost::forward<A2>(a2)));
343
+ return table_.insert_or_assign_unique(k, std::forward<M>(obj));
612
344
  }
613
345
 
614
- // try_emplace(const_iterator hint, key&&, Args&&...)
615
-
616
- template <typename A0>
617
- iterator try_emplace(
618
- const_iterator hint, BOOST_RV_REF(key_type) k, BOOST_FWD_REF(A0) a0)
619
- {
620
- return table_.try_emplace_hint_unique(
621
- hint, boost::move(k), boost::unordered::detail::create_emplace_args(
622
- boost::forward<A0>(a0)));
623
- }
624
-
625
- template <typename A0, typename A1>
626
- iterator try_emplace(const_iterator hint, BOOST_RV_REF(key_type) k,
627
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
628
- {
629
- return table_.try_emplace_hint_unique(hint, boost::move(k),
630
- boost::unordered::detail::create_emplace_args(
631
- boost::forward<A0>(a0), boost::forward<A1>(a1)));
632
- }
633
-
634
- template <typename A0, typename A1, typename A2>
635
- iterator try_emplace(const_iterator hint, BOOST_RV_REF(key_type) k,
636
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
637
- {
638
- return table_.try_emplace_hint_unique(hint, boost::move(k),
639
- boost::unordered::detail::create_emplace_args(boost::forward<A0>(a0),
640
- boost::forward<A1>(a1), boost::forward<A2>(a2)));
641
- }
642
-
643
- #define BOOST_UNORDERED_TRY_EMPLACE(z, n, _) \
644
- \
645
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
646
- std::pair<iterator, bool> try_emplace( \
647
- key_type const& k, BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
648
- { \
649
- return table_.try_emplace_unique( \
650
- k, boost::unordered::detail::create_emplace_args( \
651
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))); \
652
- } \
653
- \
654
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
655
- std::pair<iterator, bool> try_emplace(BOOST_RV_REF(key_type) k, \
656
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
657
- { \
658
- return table_.try_emplace_unique(boost::move(k), \
659
- boost::unordered::detail::create_emplace_args( \
660
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))); \
661
- } \
662
- \
663
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
664
- iterator try_emplace(const_iterator hint, key_type const& k, \
665
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
666
- { \
667
- return table_.try_emplace_hint_unique( \
668
- hint, k, boost::unordered::detail::create_emplace_args( \
669
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))); \
670
- } \
671
- \
672
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
673
- iterator try_emplace(const_iterator hint, BOOST_RV_REF(key_type) k, \
674
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
675
- { \
676
- return table_.try_emplace_hint_unique(hint, boost::move(k), \
677
- boost::unordered::detail::create_emplace_args( \
678
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))); \
679
- }
680
-
681
- BOOST_UNORDERED_TRY_EMPLACE(1, 4, _)
682
- BOOST_UNORDERED_TRY_EMPLACE(1, 5, _)
683
- BOOST_UNORDERED_TRY_EMPLACE(1, 6, _)
684
- BOOST_UNORDERED_TRY_EMPLACE(1, 7, _)
685
- BOOST_UNORDERED_TRY_EMPLACE(1, 8, _)
686
- BOOST_UNORDERED_TRY_EMPLACE(1, 9, _)
687
- BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
688
- BOOST_UNORDERED_TRY_EMPLACE, _)
689
-
690
- #undef BOOST_UNORDERED_TRY_EMPLACE
691
-
692
- #endif
693
-
694
346
  template <class M>
695
- std::pair<iterator, bool> insert_or_assign(
696
- key_type const& k, BOOST_FWD_REF(M) obj)
347
+ std::pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj)
697
348
  {
698
- return table_.insert_or_assign_unique(k, boost::forward<M>(obj));
349
+ return table_.insert_or_assign_unique(
350
+ std::move(k), std::forward<M>(obj));
699
351
  }
700
352
 
701
- template <class M>
702
- std::pair<iterator, bool> insert_or_assign(
703
- BOOST_RV_REF(key_type) k, BOOST_FWD_REF(M) obj)
353
+ template <class Key, class M>
354
+ typename boost::enable_if_c<detail::are_transparent<Key, H, P>::value,
355
+ std::pair<iterator, bool> >::type
356
+ insert_or_assign(Key&& k, M&& obj)
704
357
  {
705
358
  return table_.insert_or_assign_unique(
706
- boost::move(k), boost::forward<M>(obj));
359
+ std::forward<Key>(k), std::forward<M>(obj));
707
360
  }
708
361
 
709
362
  template <class M>
710
- iterator insert_or_assign(
711
- const_iterator, key_type const& k, BOOST_FWD_REF(M) obj)
363
+ iterator insert_or_assign(const_iterator, key_type const& k, M&& obj)
712
364
  {
713
- return table_.insert_or_assign_unique(k, boost::forward<M>(obj)).first;
365
+ return table_.insert_or_assign_unique(k, std::forward<M>(obj)).first;
714
366
  }
715
367
 
716
368
  template <class M>
717
- iterator insert_or_assign(
718
- const_iterator, BOOST_RV_REF(key_type) k, BOOST_FWD_REF(M) obj)
369
+ iterator insert_or_assign(const_iterator, key_type&& k, M&& obj)
370
+ {
371
+ return table_
372
+ .insert_or_assign_unique(std::move(k), std::forward<M>(obj))
373
+ .first;
374
+ }
375
+
376
+ template <class Key, class M>
377
+ typename boost::enable_if_c<detail::are_transparent<Key, H, P>::value,
378
+ iterator>::type
379
+ insert_or_assign(const_iterator, Key&& k, M&& obj)
719
380
  {
720
381
  return table_
721
- .insert_or_assign_unique(boost::move(k), boost::forward<M>(obj))
382
+ .insert_or_assign_unique(std::forward<Key>(k), std::forward<M>(obj))
722
383
  .first;
723
384
  }
724
385
 
@@ -731,9 +392,9 @@ namespace boost {
731
392
  typename boost::enable_if_c<
732
393
  detail::transparent_non_iterable<Key, unordered_map>::value,
733
394
  size_type>::type
734
- erase(BOOST_FWD_REF(Key) k)
395
+ erase(Key&& k)
735
396
  {
736
- return table_.erase_key_unique_impl(boost::forward<Key>(k));
397
+ return table_.erase_key_unique_impl(std::forward<Key>(k));
737
398
  }
738
399
 
739
400
  BOOST_UNORDERED_DEPRECATED("Use erase instead")
@@ -742,26 +403,22 @@ namespace boost {
742
403
  void erase_return_void(const_iterator it) { erase(it); }
743
404
 
744
405
  void swap(unordered_map&)
745
- BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
746
- boost::is_nothrow_swappable<H>::value&&
747
- boost::is_nothrow_swappable<P>::value);
748
- void clear() BOOST_NOEXCEPT { table_.clear_impl(); }
406
+ noexcept(value_allocator_traits::is_always_equal::value&&
407
+ boost::unordered::detail::is_nothrow_swappable<H>::value&&
408
+ boost::unordered::detail::is_nothrow_swappable<P>::value);
409
+ void clear() noexcept { table_.clear_impl(); }
749
410
 
750
411
  template <typename H2, typename P2>
751
412
  void merge(boost::unordered_map<K, T, H2, P2, A>& source);
752
413
 
753
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
754
414
  template <typename H2, typename P2>
755
415
  void merge(boost::unordered_map<K, T, H2, P2, A>&& source);
756
- #endif
757
416
 
758
417
  template <typename H2, typename P2>
759
418
  void merge(boost::unordered_multimap<K, T, H2, P2, A>& source);
760
419
 
761
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
762
420
  template <typename H2, typename P2>
763
421
  void merge(boost::unordered_multimap<K, T, H2, P2, A>&& source);
764
- #endif
765
422
 
766
423
  // observers
767
424
 
@@ -855,18 +512,31 @@ namespace boost {
855
512
  }
856
513
 
857
514
  mapped_type& operator[](const key_type&);
858
- mapped_type& operator[](BOOST_RV_REF(key_type));
515
+ mapped_type& operator[](key_type&&);
516
+
517
+ template <class Key>
518
+ typename boost::enable_if_c<detail::are_transparent<Key, H, P>::value,
519
+ mapped_type&>::type
520
+ operator[](Key&& k);
521
+
859
522
  mapped_type& at(const key_type&);
860
523
  mapped_type const& at(const key_type&) const;
861
524
 
525
+ template <class Key>
526
+ typename boost::enable_if_c<detail::are_transparent<Key, H, P>::value,
527
+ mapped_type&>::type
528
+ at(Key&& k);
529
+
530
+ template <class Key>
531
+ typename boost::enable_if_c<detail::are_transparent<Key, H, P>::value,
532
+ mapped_type const&>::type
533
+ at(Key&& k) const;
534
+
862
535
  // bucket interface
863
536
 
864
- size_type bucket_count() const BOOST_NOEXCEPT
865
- {
866
- return table_.bucket_count();
867
- }
537
+ size_type bucket_count() const noexcept { return table_.bucket_count(); }
868
538
 
869
- size_type max_bucket_count() const BOOST_NOEXCEPT
539
+ size_type max_bucket_count() const noexcept
870
540
  {
871
541
  return table_.max_bucket_count();
872
542
  }
@@ -878,11 +548,16 @@ namespace boost {
878
548
  return table_.hash_to_bucket(table_.hash(k));
879
549
  }
880
550
 
881
- local_iterator begin(size_type n)
551
+ template <class Key>
552
+ typename boost::enable_if_c<detail::are_transparent<Key, H, P>::value,
553
+ size_type>::type
554
+ bucket(Key&& k) const
882
555
  {
883
- return table_.begin(n);
556
+ return table_.hash_to_bucket(table_.hash(std::forward<Key>(k)));
884
557
  }
885
558
 
559
+ local_iterator begin(size_type n) { return table_.begin(n); }
560
+
886
561
  const_local_iterator begin(size_type n) const
887
562
  {
888
563
  return const_local_iterator(table_.begin(n));
@@ -906,9 +581,9 @@ namespace boost {
906
581
 
907
582
  // hash policy
908
583
 
909
- float load_factor() const BOOST_NOEXCEPT;
910
- float max_load_factor() const BOOST_NOEXCEPT { return table_.mlf_; }
911
- void max_load_factor(float) BOOST_NOEXCEPT;
584
+ float load_factor() const noexcept;
585
+ float max_load_factor() const noexcept { return table_.mlf_; }
586
+ void max_load_factor(float) noexcept;
912
587
  void rehash(size_type);
913
588
  void reserve(size_type);
914
589
 
@@ -920,19 +595,14 @@ namespace boost {
920
595
  #endif
921
596
  }; // class template unordered_map
922
597
 
923
- #if BOOST_UNORDERED_TEMPLATE_DEDUCTION_GUIDES
598
+ template <class Archive, class K, class T, class H, class P, class A>
599
+ void serialize(
600
+ Archive& ar, unordered_map<K, T, H, P, A>& m, unsigned int version)
601
+ {
602
+ detail::serialize_fca_container(ar, m, version);
603
+ }
924
604
 
925
- namespace detail {
926
- template <typename T>
927
- using iter_key_t =
928
- typename std::iterator_traits<T>::value_type::first_type;
929
- template <typename T>
930
- using iter_val_t =
931
- typename std::iterator_traits<T>::value_type::second_type;
932
- template <typename T>
933
- using iter_to_alloc_t =
934
- typename std::pair<iter_key_t<T> const, iter_val_t<T> >;
935
- } // namespace detail
605
+ #if BOOST_UNORDERED_TEMPLATE_DEDUCTION_GUIDES
936
606
 
937
607
  template <class InputIterator,
938
608
  class Hash =
@@ -941,10 +611,10 @@ namespace boost {
941
611
  std::equal_to<boost::unordered::detail::iter_key_t<InputIterator> >,
942
612
  class Allocator = std::allocator<
943
613
  boost::unordered::detail::iter_to_alloc_t<InputIterator> >,
944
- class = boost::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
945
- class = boost::enable_if_t<detail::is_hash_v<Hash> >,
946
- class = boost::enable_if_t<detail::is_pred_v<Pred> >,
947
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
614
+ class = std::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
615
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
616
+ class = std::enable_if_t<detail::is_pred_v<Pred> >,
617
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
948
618
  unordered_map(InputIterator, InputIterator,
949
619
  std::size_t = boost::unordered::detail::default_bucket_count,
950
620
  Hash = Hash(), Pred = Pred(), Allocator = Allocator())
@@ -953,20 +623,20 @@ namespace boost {
953
623
  Allocator>;
954
624
 
955
625
  template <class Key, class T,
956
- class Hash = boost::hash<boost::remove_const_t<Key> >,
957
- class Pred = std::equal_to<boost::remove_const_t<Key> >,
626
+ class Hash = boost::hash<std::remove_const_t<Key> >,
627
+ class Pred = std::equal_to<std::remove_const_t<Key> >,
958
628
  class Allocator = std::allocator<std::pair<const Key, T> >,
959
- class = boost::enable_if_t<detail::is_hash_v<Hash> >,
960
- class = boost::enable_if_t<detail::is_pred_v<Pred> >,
961
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
629
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
630
+ class = std::enable_if_t<detail::is_pred_v<Pred> >,
631
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
962
632
  unordered_map(std::initializer_list<std::pair<Key, T> >,
963
633
  std::size_t = boost::unordered::detail::default_bucket_count,
964
634
  Hash = Hash(), Pred = Pred(), Allocator = Allocator())
965
- -> unordered_map<boost::remove_const_t<Key>, T, Hash, Pred, Allocator>;
635
+ -> unordered_map<std::remove_const_t<Key>, T, Hash, Pred, Allocator>;
966
636
 
967
637
  template <class InputIterator, class Allocator,
968
- class = boost::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
969
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
638
+ class = std::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
639
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
970
640
  unordered_map(InputIterator, InputIterator, std::size_t, Allocator)
971
641
  -> unordered_map<boost::unordered::detail::iter_key_t<InputIterator>,
972
642
  boost::unordered::detail::iter_val_t<InputIterator>,
@@ -975,8 +645,8 @@ namespace boost {
975
645
  Allocator>;
976
646
 
977
647
  template <class InputIterator, class Allocator,
978
- class = boost::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
979
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
648
+ class = std::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
649
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
980
650
  unordered_map(InputIterator, InputIterator, Allocator)
981
651
  -> unordered_map<boost::unordered::detail::iter_key_t<InputIterator>,
982
652
  boost::unordered::detail::iter_val_t<InputIterator>,
@@ -985,9 +655,9 @@ namespace boost {
985
655
  Allocator>;
986
656
 
987
657
  template <class InputIterator, class Hash, class Allocator,
988
- class = boost::enable_if_t<detail::is_hash_v<Hash> >,
989
- class = boost::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
990
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
658
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
659
+ class = std::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
660
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
991
661
  unordered_map(InputIterator, InputIterator, std::size_t, Hash, Allocator)
992
662
  -> unordered_map<boost::unordered::detail::iter_key_t<InputIterator>,
993
663
  boost::unordered::detail::iter_val_t<InputIterator>, Hash,
@@ -995,34 +665,31 @@ namespace boost {
995
665
  Allocator>;
996
666
 
997
667
  template <class Key, class T, class Allocator,
998
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
668
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
999
669
  unordered_map(std::initializer_list<std::pair<Key, T> >, std::size_t,
1000
- Allocator) -> unordered_map<boost::remove_const_t<Key>, T,
1001
- boost::hash<boost::remove_const_t<Key> >,
1002
- std::equal_to<boost::remove_const_t<Key> >, Allocator>;
670
+ Allocator) -> unordered_map<std::remove_const_t<Key>, T,
671
+ boost::hash<std::remove_const_t<Key> >,
672
+ std::equal_to<std::remove_const_t<Key> >, Allocator>;
1003
673
 
1004
674
  template <class Key, class T, class Allocator,
1005
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
675
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1006
676
  unordered_map(std::initializer_list<std::pair<Key, T> >, Allocator)
1007
- -> unordered_map<boost::remove_const_t<Key>, T,
1008
- boost::hash<boost::remove_const_t<Key> >,
1009
- std::equal_to<boost::remove_const_t<Key> >, Allocator>;
677
+ -> unordered_map<std::remove_const_t<Key>, T,
678
+ boost::hash<std::remove_const_t<Key> >,
679
+ std::equal_to<std::remove_const_t<Key> >, Allocator>;
1010
680
 
1011
681
  template <class Key, class T, class Hash, class Allocator,
1012
- class = boost::enable_if_t<detail::is_hash_v<Hash> >,
1013
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
682
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
683
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1014
684
  unordered_map(std::initializer_list<std::pair<Key, T> >, std::size_t, Hash,
1015
- Allocator) -> unordered_map<boost::remove_const_t<Key>, T, Hash,
1016
- std::equal_to<boost::remove_const_t<Key> >, Allocator>;
685
+ Allocator) -> unordered_map<std::remove_const_t<Key>, T, Hash,
686
+ std::equal_to<std::remove_const_t<Key> >, Allocator>;
1017
687
 
1018
688
  #endif
1019
689
 
1020
690
  template <class K, class T, class H, class P, class A>
1021
691
  class unordered_multimap
1022
692
  {
1023
- #if defined(BOOST_UNORDERED_USE_MOVE)
1024
- BOOST_COPYABLE_AND_MOVABLE(unordered_multimap)
1025
- #endif
1026
693
  template <typename, typename, typename, typename, typename>
1027
694
  friend class unordered_map;
1028
695
 
@@ -1030,9 +697,11 @@ namespace boost {
1030
697
  typedef K key_type;
1031
698
  typedef T mapped_type;
1032
699
  typedef std::pair<const K, T> value_type;
1033
- typedef typename boost::type_identity<H>::type hasher;
1034
- typedef typename boost::type_identity<P>::type key_equal;
1035
- typedef typename boost::type_identity<A>::type allocator_type;
700
+ typedef typename boost::unordered::detail::type_identity<H>::type hasher;
701
+ typedef
702
+ typename boost::unordered::detail::type_identity<P>::type key_equal;
703
+ typedef typename boost::unordered::detail::type_identity<A>::type
704
+ allocator_type;
1036
705
 
1037
706
  private:
1038
707
  typedef boost::unordered::detail::map<A, K, T, H, P> types;
@@ -1075,29 +744,23 @@ namespace boost {
1075
744
 
1076
745
  unordered_multimap(unordered_multimap const&);
1077
746
 
1078
- #if defined(BOOST_UNORDERED_USE_MOVE) || \
1079
- !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
1080
- unordered_multimap(BOOST_RV_REF(unordered_multimap) other)
1081
- BOOST_NOEXCEPT_IF(table::nothrow_move_constructible)
747
+ unordered_multimap(unordered_multimap&& other)
748
+ noexcept(table::nothrow_move_constructible)
1082
749
  : table_(other.table_, boost::unordered::detail::move_tag())
1083
750
  {
1084
751
  // The move is done in table_
1085
752
  }
1086
- #endif
1087
753
 
1088
754
  explicit unordered_multimap(allocator_type const&);
1089
755
 
1090
756
  unordered_multimap(unordered_multimap const&, allocator_type const&);
1091
757
 
1092
- unordered_multimap(
1093
- BOOST_RV_REF(unordered_multimap), allocator_type const&);
758
+ unordered_multimap(unordered_multimap&&, allocator_type const&);
1094
759
 
1095
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1096
760
  unordered_multimap(std::initializer_list<value_type>,
1097
761
  size_type = boost::unordered::detail::default_bucket_count,
1098
762
  const hasher& = hasher(), const key_equal& l = key_equal(),
1099
763
  const allocator_type& = allocator_type());
1100
- #endif
1101
764
 
1102
765
  explicit unordered_multimap(size_type, const allocator_type&);
1103
766
 
@@ -1114,7 +777,6 @@ namespace boost {
1114
777
  unordered_multimap(
1115
778
  InputIt, InputIt, size_type, const hasher&, const allocator_type&);
1116
779
 
1117
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1118
780
  unordered_multimap(
1119
781
  std::initializer_list<value_type>, const allocator_type&);
1120
782
 
@@ -1123,256 +785,93 @@ namespace boost {
1123
785
 
1124
786
  unordered_multimap(std::initializer_list<value_type>, size_type,
1125
787
  const hasher&, const allocator_type&);
1126
- #endif
1127
788
 
1128
789
  // Destructor
1129
790
 
1130
- ~unordered_multimap() BOOST_NOEXCEPT;
791
+ ~unordered_multimap() noexcept;
1131
792
 
1132
- // Assign
793
+ // Assign
1133
794
 
1134
- #if defined(BOOST_UNORDERED_USE_MOVE)
1135
- unordered_multimap& operator=(BOOST_COPY_ASSIGN_REF(unordered_multimap) x)
1136
- {
1137
- table_.assign(x.table_, boost::unordered::detail::false_type());
1138
- return *this;
1139
- }
1140
-
1141
- unordered_multimap& operator=(BOOST_RV_REF(unordered_multimap) x)
1142
- BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
1143
- boost::is_nothrow_move_assignable<H>::value&&
1144
- boost::is_nothrow_move_assignable<P>::value)
1145
- {
1146
- table_.move_assign(x.table_, boost::unordered::detail::false_type());
1147
- return *this;
1148
- }
1149
- #else
1150
795
  unordered_multimap& operator=(unordered_multimap const& x)
1151
796
  {
1152
- table_.assign(x.table_, boost::unordered::detail::false_type());
797
+ table_.assign(x.table_, std::false_type());
1153
798
  return *this;
1154
799
  }
1155
800
 
1156
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
1157
801
  unordered_multimap& operator=(unordered_multimap&& x)
1158
- BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
1159
- boost::is_nothrow_move_assignable<H>::value&&
1160
- boost::is_nothrow_move_assignable<P>::value)
802
+ noexcept(value_allocator_traits::is_always_equal::value&&
803
+ std::is_nothrow_move_assignable<H>::value&&
804
+ std::is_nothrow_move_assignable<P>::value)
1161
805
  {
1162
- table_.move_assign(x.table_, boost::unordered::detail::false_type());
806
+ table_.move_assign(x.table_, std::false_type());
1163
807
  return *this;
1164
808
  }
1165
- #endif
1166
- #endif
1167
809
 
1168
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1169
810
  unordered_multimap& operator=(std::initializer_list<value_type>);
1170
- #endif
1171
811
 
1172
- allocator_type get_allocator() const BOOST_NOEXCEPT
812
+ allocator_type get_allocator() const noexcept
1173
813
  {
1174
- return table_.node_alloc();
814
+ return allocator_type(table_.node_alloc());
1175
815
  }
1176
816
 
1177
817
  // iterators
1178
818
 
1179
- iterator begin() BOOST_NOEXCEPT { return iterator(table_.begin()); }
819
+ iterator begin() noexcept { return iterator(table_.begin()); }
1180
820
 
1181
- const_iterator begin() const BOOST_NOEXCEPT
821
+ const_iterator begin() const noexcept
1182
822
  {
1183
823
  return const_iterator(table_.begin());
1184
824
  }
1185
825
 
1186
- iterator end() BOOST_NOEXCEPT { return iterator(); }
826
+ iterator end() noexcept { return iterator(); }
1187
827
 
1188
- const_iterator end() const BOOST_NOEXCEPT { return const_iterator(); }
828
+ const_iterator end() const noexcept { return const_iterator(); }
1189
829
 
1190
- const_iterator cbegin() const BOOST_NOEXCEPT
830
+ const_iterator cbegin() const noexcept
1191
831
  {
1192
832
  return const_iterator(table_.begin());
1193
833
  }
1194
834
 
1195
- const_iterator cend() const BOOST_NOEXCEPT { return const_iterator(); }
835
+ const_iterator cend() const noexcept { return const_iterator(); }
1196
836
 
1197
837
  // size and capacity
1198
838
 
1199
- BOOST_ATTRIBUTE_NODISCARD bool empty() const BOOST_NOEXCEPT
839
+ BOOST_ATTRIBUTE_NODISCARD bool empty() const noexcept
1200
840
  {
1201
841
  return table_.size_ == 0;
1202
842
  }
1203
843
 
1204
- size_type size() const BOOST_NOEXCEPT { return table_.size_; }
844
+ size_type size() const noexcept { return table_.size_; }
1205
845
 
1206
- size_type max_size() const BOOST_NOEXCEPT;
846
+ size_type max_size() const noexcept;
1207
847
 
1208
- // emplace
848
+ // emplace
1209
849
 
1210
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
1211
-
1212
- template <class... Args> iterator emplace(BOOST_FWD_REF(Args)... args)
850
+ template <class... Args> iterator emplace(Args&&... args)
1213
851
  {
1214
852
  return iterator(table_.emplace_equiv(
1215
853
  boost::unordered::detail::func::construct_node_from_args(
1216
- table_.node_alloc(), boost::forward<Args>(args)...)));
854
+ table_.node_alloc(), std::forward<Args>(args)...)));
1217
855
  }
1218
856
 
1219
- #else
1220
-
1221
- #if !BOOST_UNORDERED_SUN_WORKAROUNDS1
1222
-
1223
- // 0 argument emplace requires special treatment in case
1224
- // the container is instantiated with a value type that
1225
- // doesn't have a default constructor.
1226
-
1227
- iterator emplace(boost::unordered::detail::empty_emplace =
1228
- boost::unordered::detail::empty_emplace(),
1229
- value_type v = value_type())
1230
- {
1231
- return this->emplace(boost::move(v));
1232
- }
1233
-
1234
- #endif
1235
-
1236
- template <typename A0> iterator emplace(BOOST_FWD_REF(A0) a0)
1237
- {
1238
- return iterator(table_.emplace_equiv(
1239
- boost::unordered::detail::func::construct_node_from_args(
1240
- table_.node_alloc(), boost::unordered::detail::create_emplace_args(
1241
- boost::forward<A0>(a0)))));
1242
- }
1243
-
1244
- template <typename A0, typename A1>
1245
- iterator emplace(BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
1246
- {
1247
- return iterator(table_.emplace_equiv(
1248
- boost::unordered::detail::func::construct_node_from_args(
1249
- table_.node_alloc(),
1250
- boost::unordered::detail::create_emplace_args(
1251
- boost::forward<A0>(a0), boost::forward<A1>(a1)))));
1252
- }
1253
-
1254
- template <typename A0, typename A1, typename A2>
1255
- iterator emplace(
1256
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
1257
- {
1258
- return iterator(table_.emplace_equiv(
1259
- boost::unordered::detail::func::construct_node_from_args(
1260
- table_.node_alloc(),
1261
- boost::unordered::detail::create_emplace_args(
1262
- boost::forward<A0>(a0), boost::forward<A1>(a1),
1263
- boost::forward<A2>(a2)))));
1264
- }
1265
-
1266
- #endif
1267
-
1268
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
1269
-
1270
857
  template <class... Args>
1271
- iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(Args)... args)
1272
- {
1273
- return iterator(table_.emplace_hint_equiv(
1274
- hint, boost::unordered::detail::func::construct_node_from_args(
1275
- table_.node_alloc(), boost::forward<Args>(args)...)));
1276
- }
1277
-
1278
- #else
1279
-
1280
- #if !BOOST_UNORDERED_SUN_WORKAROUNDS1
1281
-
1282
- iterator emplace_hint(const_iterator hint,
1283
- boost::unordered::detail::empty_emplace =
1284
- boost::unordered::detail::empty_emplace(),
1285
- value_type v = value_type())
1286
- {
1287
- return this->emplace_hint(hint, boost::move(v));
1288
- }
1289
-
1290
- #endif
1291
-
1292
- template <typename A0>
1293
- iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(A0) a0)
1294
- {
1295
- return iterator(table_.emplace_hint_equiv(hint,
1296
- boost::unordered::detail::func::construct_node_from_args(
1297
- table_.node_alloc(), boost::unordered::detail::create_emplace_args(
1298
- boost::forward<A0>(a0)))));
1299
- }
1300
-
1301
- template <typename A0, typename A1>
1302
- iterator emplace_hint(
1303
- const_iterator hint, BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
1304
- {
1305
- return iterator(table_.emplace_hint_equiv(
1306
- hint, boost::unordered::detail::func::construct_node_from_args(
1307
- table_.node_alloc(),
1308
- boost::unordered::detail::create_emplace_args(
1309
- boost::forward<A0>(a0), boost::forward<A1>(a1)))));
1310
- }
1311
-
1312
- template <typename A0, typename A1, typename A2>
1313
- iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(A0) a0,
1314
- BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
858
+ iterator emplace_hint(const_iterator hint, Args&&... args)
1315
859
  {
1316
860
  return iterator(table_.emplace_hint_equiv(
1317
861
  hint, boost::unordered::detail::func::construct_node_from_args(
1318
- table_.node_alloc(),
1319
- boost::unordered::detail::create_emplace_args(
1320
- boost::forward<A0>(a0), boost::forward<A1>(a1),
1321
- boost::forward<A2>(a2)))));
862
+ table_.node_alloc(), std::forward<Args>(args)...)));
1322
863
  }
1323
864
 
1324
- #endif
1325
-
1326
- #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
1327
-
1328
- #define BOOST_UNORDERED_EMPLACE(z, n, _) \
1329
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
1330
- iterator emplace(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
1331
- { \
1332
- return iterator(table_.emplace_equiv( \
1333
- boost::unordered::detail::func::construct_node_from_args( \
1334
- table_.node_alloc(), \
1335
- boost::unordered::detail::create_emplace_args( \
1336
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))))); \
1337
- } \
1338
- \
1339
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
1340
- iterator emplace_hint( \
1341
- const_iterator hint, BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
1342
- { \
1343
- return iterator(table_.emplace_hint_equiv( \
1344
- hint, boost::unordered::detail::func::construct_node_from_args( \
1345
- table_.node_alloc(), \
1346
- boost::unordered::detail::create_emplace_args( \
1347
- BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))))); \
1348
- }
1349
-
1350
- BOOST_UNORDERED_EMPLACE(1, 4, _)
1351
- BOOST_UNORDERED_EMPLACE(1, 5, _)
1352
- BOOST_UNORDERED_EMPLACE(1, 6, _)
1353
- BOOST_UNORDERED_EMPLACE(1, 7, _)
1354
- BOOST_UNORDERED_EMPLACE(1, 8, _)
1355
- BOOST_UNORDERED_EMPLACE(1, 9, _)
1356
- BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
1357
- BOOST_UNORDERED_EMPLACE, _)
1358
-
1359
- #undef BOOST_UNORDERED_EMPLACE
1360
-
1361
- #endif
1362
-
1363
865
  iterator insert(value_type const& x) { return this->emplace(x); }
1364
866
 
1365
- iterator insert(BOOST_RV_REF(value_type) x)
1366
- {
1367
- return this->emplace(boost::move(x));
1368
- }
867
+ iterator insert(value_type&& x) { return this->emplace(std::move(x)); }
1369
868
 
1370
869
  template <class P2>
1371
- typename boost::enable_if<
1372
- boost::is_constructible<value_type, BOOST_RV_REF(P2)>,
1373
- iterator>::type insert(BOOST_RV_REF(P2) obj)
870
+ typename boost::enable_if<std::is_constructible<value_type, P2&&>,
871
+ iterator>::type
872
+ insert(P2&& obj)
1374
873
  {
1375
- return this->emplace(boost::forward<P2>(obj));
874
+ return this->emplace(std::forward<P2>(obj));
1376
875
  }
1377
876
 
1378
877
  iterator insert(const_iterator hint, value_type const& x)
@@ -1380,25 +879,22 @@ namespace boost {
1380
879
  return this->emplace_hint(hint, x);
1381
880
  }
1382
881
 
1383
- iterator insert(const_iterator hint, BOOST_RV_REF(value_type) x)
882
+ iterator insert(const_iterator hint, value_type&& x)
1384
883
  {
1385
- return this->emplace_hint(hint, boost::move(x));
884
+ return this->emplace_hint(hint, std::move(x));
1386
885
  }
1387
886
 
1388
887
  template <class P2>
1389
- typename boost::enable_if<
1390
- boost::is_constructible<value_type, BOOST_RV_REF(P2)>,
888
+ typename boost::enable_if<std::is_constructible<value_type, P2&&>,
1391
889
  iterator>::type
1392
- insert(const_iterator hint, BOOST_RV_REF(P2) obj)
890
+ insert(const_iterator hint, P2&& obj)
1393
891
  {
1394
- return this->emplace_hint(hint, boost::forward<P2>(obj));
892
+ return this->emplace_hint(hint, std::forward<P2>(obj));
1395
893
  }
1396
894
 
1397
895
  template <class InputIt> void insert(InputIt, InputIt);
1398
896
 
1399
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1400
897
  void insert(std::initializer_list<value_type>);
1401
- #endif
1402
898
 
1403
899
  // extract
1404
900
 
@@ -1422,26 +918,16 @@ namespace boost {
1422
918
  return node_type(table_.extract_by_key_impl(k), table_.node_alloc());
1423
919
  }
1424
920
 
1425
- iterator insert(BOOST_RV_REF(node_type) np)
921
+ iterator insert(node_type&& np)
1426
922
  {
1427
923
  return table_.move_insert_node_type_equiv(np);
1428
924
  }
1429
925
 
1430
- iterator insert(const_iterator hint, BOOST_RV_REF(node_type) np)
926
+ iterator insert(const_iterator hint, node_type&& np)
1431
927
  {
1432
928
  return table_.move_insert_node_type_with_hint_equiv(hint, np);
1433
929
  }
1434
930
 
1435
- #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
1436
- (BOOST_COMP_GNUC && BOOST_COMP_GNUC < BOOST_VERSION_NUMBER(4, 6, 0))
1437
- private:
1438
- // Note: Use r-value node_type to insert.
1439
- iterator insert(node_type&);
1440
- iterator insert(const_iterator, node_type& np);
1441
-
1442
- public:
1443
- #endif
1444
-
1445
931
  iterator erase(iterator);
1446
932
  iterator erase(const_iterator);
1447
933
  size_type erase(const key_type&);
@@ -1451,9 +937,9 @@ namespace boost {
1451
937
  typename boost::enable_if_c<
1452
938
  detail::transparent_non_iterable<Key, unordered_multimap>::value,
1453
939
  size_type>::type
1454
- erase(BOOST_FWD_REF(Key) k)
940
+ erase(Key&& k)
1455
941
  {
1456
- return table_.erase_key_equiv_impl(boost::forward<Key>(k));
942
+ return table_.erase_key_equiv_impl(std::forward<Key>(k));
1457
943
  }
1458
944
 
1459
945
  BOOST_UNORDERED_DEPRECATED("Use erase instead")
@@ -1462,26 +948,22 @@ namespace boost {
1462
948
  void erase_return_void(const_iterator it) { erase(it); }
1463
949
 
1464
950
  void swap(unordered_multimap&)
1465
- BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
1466
- boost::is_nothrow_swappable<H>::value&&
1467
- boost::is_nothrow_swappable<P>::value);
1468
- void clear() BOOST_NOEXCEPT { table_.clear_impl(); }
951
+ noexcept(value_allocator_traits::is_always_equal::value&&
952
+ boost::unordered::detail::is_nothrow_swappable<H>::value&&
953
+ boost::unordered::detail::is_nothrow_swappable<P>::value);
954
+ void clear() noexcept { table_.clear_impl(); }
1469
955
 
1470
956
  template <typename H2, typename P2>
1471
957
  void merge(boost::unordered_multimap<K, T, H2, P2, A>& source);
1472
958
 
1473
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
1474
959
  template <typename H2, typename P2>
1475
960
  void merge(boost::unordered_multimap<K, T, H2, P2, A>&& source);
1476
- #endif
1477
961
 
1478
962
  template <typename H2, typename P2>
1479
963
  void merge(boost::unordered_map<K, T, H2, P2, A>& source);
1480
964
 
1481
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
1482
965
  template <typename H2, typename P2>
1483
966
  void merge(boost::unordered_map<K, T, H2, P2, A>&& source);
1484
- #endif
1485
967
 
1486
968
  // observers
1487
969
 
@@ -1567,12 +1049,9 @@ namespace boost {
1567
1049
 
1568
1050
  // bucket interface
1569
1051
 
1570
- size_type bucket_count() const BOOST_NOEXCEPT
1571
- {
1572
- return table_.bucket_count();
1573
- }
1052
+ size_type bucket_count() const noexcept { return table_.bucket_count(); }
1574
1053
 
1575
- size_type max_bucket_count() const BOOST_NOEXCEPT
1054
+ size_type max_bucket_count() const noexcept
1576
1055
  {
1577
1056
  return table_.max_bucket_count();
1578
1057
  }
@@ -1584,6 +1063,14 @@ namespace boost {
1584
1063
  return table_.hash_to_bucket(table_.hash(k));
1585
1064
  }
1586
1065
 
1066
+ template <class Key>
1067
+ typename boost::enable_if_c<detail::are_transparent<Key, H, P>::value,
1068
+ size_type>::type
1069
+ bucket(Key&& k) const
1070
+ {
1071
+ return table_.hash_to_bucket(table_.hash(std::forward<Key>(k)));
1072
+ }
1073
+
1587
1074
  local_iterator begin(size_type n)
1588
1075
  {
1589
1076
  return local_iterator(table_.begin(n));
@@ -1613,9 +1100,9 @@ namespace boost {
1613
1100
 
1614
1101
  // hash policy
1615
1102
 
1616
- float load_factor() const BOOST_NOEXCEPT;
1617
- float max_load_factor() const BOOST_NOEXCEPT { return table_.mlf_; }
1618
- void max_load_factor(float) BOOST_NOEXCEPT;
1103
+ float load_factor() const noexcept;
1104
+ float max_load_factor() const noexcept { return table_.mlf_; }
1105
+ void max_load_factor(float) noexcept;
1619
1106
  void rehash(size_type);
1620
1107
  void reserve(size_type);
1621
1108
 
@@ -1627,6 +1114,13 @@ namespace boost {
1627
1114
  #endif
1628
1115
  }; // class template unordered_multimap
1629
1116
 
1117
+ template <class Archive, class K, class T, class H, class P, class A>
1118
+ void serialize(
1119
+ Archive& ar, unordered_multimap<K, T, H, P, A>& m, unsigned int version)
1120
+ {
1121
+ detail::serialize_fca_container(ar, m, version);
1122
+ }
1123
+
1630
1124
  #if BOOST_UNORDERED_TEMPLATE_DEDUCTION_GUIDES
1631
1125
 
1632
1126
  template <class InputIterator,
@@ -1636,10 +1130,10 @@ namespace boost {
1636
1130
  std::equal_to<boost::unordered::detail::iter_key_t<InputIterator> >,
1637
1131
  class Allocator = std::allocator<
1638
1132
  boost::unordered::detail::iter_to_alloc_t<InputIterator> >,
1639
- class = boost::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
1640
- class = boost::enable_if_t<detail::is_hash_v<Hash> >,
1641
- class = boost::enable_if_t<detail::is_pred_v<Pred> >,
1642
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
1133
+ class = std::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
1134
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
1135
+ class = std::enable_if_t<detail::is_pred_v<Pred> >,
1136
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1643
1137
  unordered_multimap(InputIterator, InputIterator,
1644
1138
  std::size_t = boost::unordered::detail::default_bucket_count,
1645
1139
  Hash = Hash(), Pred = Pred(), Allocator = Allocator())
@@ -1648,21 +1142,20 @@ namespace boost {
1648
1142
  Allocator>;
1649
1143
 
1650
1144
  template <class Key, class T,
1651
- class Hash = boost::hash<boost::remove_const_t<Key> >,
1652
- class Pred = std::equal_to<boost::remove_const_t<Key> >,
1145
+ class Hash = boost::hash<std::remove_const_t<Key> >,
1146
+ class Pred = std::equal_to<std::remove_const_t<Key> >,
1653
1147
  class Allocator = std::allocator<std::pair<const Key, T> >,
1654
- class = boost::enable_if_t<detail::is_hash_v<Hash> >,
1655
- class = boost::enable_if_t<detail::is_pred_v<Pred> >,
1656
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
1148
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
1149
+ class = std::enable_if_t<detail::is_pred_v<Pred> >,
1150
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1657
1151
  unordered_multimap(std::initializer_list<std::pair<Key, T> >,
1658
1152
  std::size_t = boost::unordered::detail::default_bucket_count,
1659
1153
  Hash = Hash(), Pred = Pred(), Allocator = Allocator())
1660
- -> unordered_multimap<boost::remove_const_t<Key>, T, Hash, Pred,
1661
- Allocator>;
1154
+ -> unordered_multimap<std::remove_const_t<Key>, T, Hash, Pred, Allocator>;
1662
1155
 
1663
1156
  template <class InputIterator, class Allocator,
1664
- class = boost::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
1665
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
1157
+ class = std::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
1158
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1666
1159
  unordered_multimap(InputIterator, InputIterator, std::size_t, Allocator)
1667
1160
  -> unordered_multimap<boost::unordered::detail::iter_key_t<InputIterator>,
1668
1161
  boost::unordered::detail::iter_val_t<InputIterator>,
@@ -1671,8 +1164,8 @@ namespace boost {
1671
1164
  Allocator>;
1672
1165
 
1673
1166
  template <class InputIterator, class Allocator,
1674
- class = boost::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
1675
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
1167
+ class = std::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
1168
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1676
1169
  unordered_multimap(InputIterator, InputIterator, Allocator)
1677
1170
  -> unordered_multimap<boost::unordered::detail::iter_key_t<InputIterator>,
1678
1171
  boost::unordered::detail::iter_val_t<InputIterator>,
@@ -1681,9 +1174,9 @@ namespace boost {
1681
1174
  Allocator>;
1682
1175
 
1683
1176
  template <class InputIterator, class Hash, class Allocator,
1684
- class = boost::enable_if_t<detail::is_hash_v<Hash> >,
1685
- class = boost::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
1686
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
1177
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
1178
+ class = std::enable_if_t<detail::is_input_iterator_v<InputIterator> >,
1179
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1687
1180
  unordered_multimap(
1688
1181
  InputIterator, InputIterator, std::size_t, Hash, Allocator)
1689
1182
  -> unordered_multimap<boost::unordered::detail::iter_key_t<InputIterator>,
@@ -1692,25 +1185,25 @@ namespace boost {
1692
1185
  Allocator>;
1693
1186
 
1694
1187
  template <class Key, class T, class Allocator,
1695
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
1188
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1696
1189
  unordered_multimap(std::initializer_list<std::pair<Key, T> >, std::size_t,
1697
- Allocator) -> unordered_multimap<boost::remove_const_t<Key>, T,
1698
- boost::hash<boost::remove_const_t<Key> >,
1699
- std::equal_to<boost::remove_const_t<Key> >, Allocator>;
1190
+ Allocator) -> unordered_multimap<std::remove_const_t<Key>, T,
1191
+ boost::hash<std::remove_const_t<Key> >,
1192
+ std::equal_to<std::remove_const_t<Key> >, Allocator>;
1700
1193
 
1701
1194
  template <class Key, class T, class Allocator,
1702
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
1195
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1703
1196
  unordered_multimap(std::initializer_list<std::pair<Key, T> >, Allocator)
1704
- -> unordered_multimap<boost::remove_const_t<Key>, T,
1705
- boost::hash<boost::remove_const_t<Key> >,
1706
- std::equal_to<boost::remove_const_t<Key> >, Allocator>;
1197
+ -> unordered_multimap<std::remove_const_t<Key>, T,
1198
+ boost::hash<std::remove_const_t<Key> >,
1199
+ std::equal_to<std::remove_const_t<Key> >, Allocator>;
1707
1200
 
1708
1201
  template <class Key, class T, class Hash, class Allocator,
1709
- class = boost::enable_if_t<detail::is_hash_v<Hash> >,
1710
- class = boost::enable_if_t<detail::is_allocator_v<Allocator> > >
1202
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
1203
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1711
1204
  unordered_multimap(std::initializer_list<std::pair<Key, T> >, std::size_t,
1712
- Hash, Allocator) -> unordered_multimap<boost::remove_const_t<Key>, T,
1713
- Hash, std::equal_to<boost::remove_const_t<Key> >, Allocator>;
1205
+ Hash, Allocator) -> unordered_multimap<std::remove_const_t<Key>, T, Hash,
1206
+ std::equal_to<std::remove_const_t<Key> >, Allocator>;
1714
1207
 
1715
1208
  #endif
1716
1209
 
@@ -1745,8 +1238,7 @@ namespace boost {
1745
1238
  select_on_container_copy_construction(other.get_allocator()))
1746
1239
  {
1747
1240
  if (other.size()) {
1748
- table_.copy_buckets(
1749
- other.table_, boost::unordered::detail::true_type());
1241
+ table_.copy_buckets(other.table_, std::true_type());
1750
1242
  }
1751
1243
  }
1752
1244
 
@@ -1763,21 +1255,18 @@ namespace boost {
1763
1255
  : table_(other.table_, a)
1764
1256
  {
1765
1257
  if (other.table_.size_) {
1766
- table_.copy_buckets(
1767
- other.table_, boost::unordered::detail::true_type());
1258
+ table_.copy_buckets(other.table_, std::true_type());
1768
1259
  }
1769
1260
  }
1770
1261
 
1771
1262
  template <class K, class T, class H, class P, class A>
1772
1263
  unordered_map<K, T, H, P, A>::unordered_map(
1773
- BOOST_RV_REF(unordered_map) other, allocator_type const& a)
1264
+ unordered_map&& other, allocator_type const& a)
1774
1265
  : table_(other.table_, a, boost::unordered::detail::move_tag())
1775
1266
  {
1776
1267
  table_.move_construct_buckets(other.table_);
1777
1268
  }
1778
1269
 
1779
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1780
-
1781
1270
  template <class K, class T, class H, class P, class A>
1782
1271
  unordered_map<K, T, H, P, A>::unordered_map(
1783
1272
  std::initializer_list<value_type> list, size_type n, const hasher& hf,
@@ -1789,8 +1278,6 @@ namespace boost {
1789
1278
  this->insert(list.begin(), list.end());
1790
1279
  }
1791
1280
 
1792
- #endif
1793
-
1794
1281
  template <class K, class T, class H, class P, class A>
1795
1282
  unordered_map<K, T, H, P, A>::unordered_map(
1796
1283
  size_type n, const allocator_type& a)
@@ -1836,8 +1323,6 @@ namespace boost {
1836
1323
  this->insert(f, l);
1837
1324
  }
1838
1325
 
1839
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1840
-
1841
1326
  template <class K, class T, class H, class P, class A>
1842
1327
  unordered_map<K, T, H, P, A>::unordered_map(
1843
1328
  std::initializer_list<value_type> list, const allocator_type& a)
@@ -1870,15 +1355,11 @@ namespace boost {
1870
1355
  this->insert(list.begin(), list.end());
1871
1356
  }
1872
1357
 
1873
- #endif
1874
-
1875
1358
  template <class K, class T, class H, class P, class A>
1876
- unordered_map<K, T, H, P, A>::~unordered_map() BOOST_NOEXCEPT
1359
+ unordered_map<K, T, H, P, A>::~unordered_map() noexcept
1877
1360
  {
1878
1361
  }
1879
1362
 
1880
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1881
-
1882
1363
  template <class K, class T, class H, class P, class A>
1883
1364
  unordered_map<K, T, H, P, A>& unordered_map<K, T, H, P, A>::operator=(
1884
1365
  std::initializer_list<value_type> list)
@@ -1888,12 +1369,10 @@ namespace boost {
1888
1369
  return *this;
1889
1370
  }
1890
1371
 
1891
- #endif
1892
-
1893
1372
  // size and capacity
1894
1373
 
1895
1374
  template <class K, class T, class H, class P, class A>
1896
- std::size_t unordered_map<K, T, H, P, A>::max_size() const BOOST_NOEXCEPT
1375
+ std::size_t unordered_map<K, T, H, P, A>::max_size() const noexcept
1897
1376
  {
1898
1377
  using namespace std;
1899
1378
 
@@ -1916,14 +1395,12 @@ namespace boost {
1916
1395
  }
1917
1396
  }
1918
1397
 
1919
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1920
1398
  template <class K, class T, class H, class P, class A>
1921
1399
  void unordered_map<K, T, H, P, A>::insert(
1922
1400
  std::initializer_list<value_type> list)
1923
1401
  {
1924
1402
  this->insert(list.begin(), list.end());
1925
1403
  }
1926
- #endif
1927
1404
 
1928
1405
  template <class K, class T, class H, class P, class A>
1929
1406
  typename unordered_map<K, T, H, P, A>::iterator
@@ -1956,9 +1433,9 @@ namespace boost {
1956
1433
 
1957
1434
  template <class K, class T, class H, class P, class A>
1958
1435
  void unordered_map<K, T, H, P, A>::swap(unordered_map& other)
1959
- BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
1960
- boost::is_nothrow_swappable<H>::value&&
1961
- boost::is_nothrow_swappable<P>::value)
1436
+ noexcept(value_allocator_traits::is_always_equal::value&&
1437
+ boost::unordered::detail::is_nothrow_swappable<H>::value&&
1438
+ boost::unordered::detail::is_nothrow_swappable<P>::value)
1962
1439
  {
1963
1440
  table_.swap(other.table_);
1964
1441
  }
@@ -1971,7 +1448,6 @@ namespace boost {
1971
1448
  table_.merge_unique(source.table_);
1972
1449
  }
1973
1450
 
1974
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
1975
1451
  template <class K, class T, class H, class P, class A>
1976
1452
  template <typename H2, typename P2>
1977
1453
  void unordered_map<K, T, H, P, A>::merge(
@@ -1979,7 +1455,6 @@ namespace boost {
1979
1455
  {
1980
1456
  table_.merge_unique(source.table_);
1981
1457
  }
1982
- #endif
1983
1458
 
1984
1459
  template <class K, class T, class H, class P, class A>
1985
1460
  template <typename H2, typename P2>
@@ -1989,7 +1464,6 @@ namespace boost {
1989
1464
  table_.merge_unique(source.table_);
1990
1465
  }
1991
1466
 
1992
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
1993
1467
  template <class K, class T, class H, class P, class A>
1994
1468
  template <typename H2, typename P2>
1995
1469
  void unordered_map<K, T, H, P, A>::merge(
@@ -1997,7 +1471,6 @@ namespace boost {
1997
1471
  {
1998
1472
  table_.merge_unique(source.table_);
1999
1473
  }
2000
- #endif
2001
1474
 
2002
1475
  // observers
2003
1476
 
@@ -2086,16 +1559,25 @@ namespace boost {
2086
1559
 
2087
1560
  template <class K, class T, class H, class P, class A>
2088
1561
  typename unordered_map<K, T, H, P, A>::mapped_type&
2089
- unordered_map<K, T, H, P, A>::operator[](const key_type& k)
1562
+ unordered_map<K, T, H, P, A>::operator[](const key_type& k)
2090
1563
  {
2091
1564
  return table_.try_emplace_unique(k).first->second;
2092
1565
  }
2093
1566
 
2094
1567
  template <class K, class T, class H, class P, class A>
2095
1568
  typename unordered_map<K, T, H, P, A>::mapped_type&
2096
- unordered_map<K, T, H, P, A>::operator[](BOOST_RV_REF(key_type) k)
1569
+ unordered_map<K, T, H, P, A>::operator[](key_type&& k)
2097
1570
  {
2098
- return table_.try_emplace_unique(boost::move(k)).first->second;
1571
+ return table_.try_emplace_unique(std::move(k)).first->second;
1572
+ }
1573
+
1574
+ template <class K, class T, class H, class P, class A>
1575
+ template <class Key>
1576
+ typename boost::enable_if_c<detail::are_transparent<Key, H, P>::value,
1577
+ typename unordered_map<K, T, H, P, A>::mapped_type&>::type
1578
+ unordered_map<K, T, H, P, A>::operator[](Key&& k)
1579
+ {
1580
+ return table_.try_emplace_unique(std::forward<Key>(k)).first->second;
2099
1581
  }
2100
1582
 
2101
1583
  template <class K, class T, class H, class P, class A>
@@ -2110,8 +1592,8 @@ namespace boost {
2110
1592
  return p->value().second;
2111
1593
  }
2112
1594
 
2113
- boost::throw_exception(
2114
- std::out_of_range("Unable to find key in unordered_map."));
1595
+ boost::unordered::detail::throw_out_of_range(
1596
+ "Unable to find key in unordered_map.");
2115
1597
  }
2116
1598
 
2117
1599
  template <class K, class T, class H, class P, class A>
@@ -2126,8 +1608,44 @@ namespace boost {
2126
1608
  return p->value().second;
2127
1609
  }
2128
1610
 
2129
- boost::throw_exception(
2130
- std::out_of_range("Unable to find key in unordered_map."));
1611
+ boost::unordered::detail::throw_out_of_range(
1612
+ "Unable to find key in unordered_map.");
1613
+ }
1614
+
1615
+ template <class K, class T, class H, class P, class A>
1616
+ template <class Key>
1617
+ typename boost::enable_if_c<detail::are_transparent<Key, H, P>::value,
1618
+ typename unordered_map<K, T, H, P, A>::mapped_type&>::type
1619
+ unordered_map<K, T, H, P, A>::at(Key&& k)
1620
+ {
1621
+ typedef typename table::node_pointer node_pointer;
1622
+
1623
+ if (table_.size_) {
1624
+ node_pointer p = table_.find_node(std::forward<Key>(k));
1625
+ if (p)
1626
+ return p->value().second;
1627
+ }
1628
+
1629
+ boost::unordered::detail::throw_out_of_range(
1630
+ "Unable to find key in unordered_map.");
1631
+ }
1632
+
1633
+ template <class K, class T, class H, class P, class A>
1634
+ template <class Key>
1635
+ typename boost::enable_if_c<detail::are_transparent<Key, H, P>::value,
1636
+ typename unordered_map<K, T, H, P, A>::mapped_type const&>::type
1637
+ unordered_map<K, T, H, P, A>::at(Key&& k) const
1638
+ {
1639
+ typedef typename table::node_pointer node_pointer;
1640
+
1641
+ if (table_.size_) {
1642
+ node_pointer p = table_.find_node(std::forward<Key>(k));
1643
+ if (p)
1644
+ return p->value().second;
1645
+ }
1646
+
1647
+ boost::unordered::detail::throw_out_of_range(
1648
+ "Unable to find key in unordered_map.");
2131
1649
  }
2132
1650
 
2133
1651
  template <class K, class T, class H, class P, class A>
@@ -2140,7 +1658,7 @@ namespace boost {
2140
1658
  // hash policy
2141
1659
 
2142
1660
  template <class K, class T, class H, class P, class A>
2143
- float unordered_map<K, T, H, P, A>::load_factor() const BOOST_NOEXCEPT
1661
+ float unordered_map<K, T, H, P, A>::load_factor() const noexcept
2144
1662
  {
2145
1663
  if (table_.size_ == 0) {
2146
1664
  return 0.0f;
@@ -2152,7 +1670,7 @@ namespace boost {
2152
1670
  }
2153
1671
 
2154
1672
  template <class K, class T, class H, class P, class A>
2155
- void unordered_map<K, T, H, P, A>::max_load_factor(float m) BOOST_NOEXCEPT
1673
+ void unordered_map<K, T, H, P, A>::max_load_factor(float m) noexcept
2156
1674
  {
2157
1675
  table_.max_load_factor(m);
2158
1676
  }
@@ -2196,9 +1714,8 @@ namespace boost {
2196
1714
  }
2197
1715
 
2198
1716
  template <class K, class T, class H, class P, class A>
2199
- inline void swap(
2200
- unordered_map<K, T, H, P, A>& m1, unordered_map<K, T, H, P, A>& m2)
2201
- BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(m1.swap(m2)))
1717
+ inline void swap(unordered_map<K, T, H, P, A>& m1,
1718
+ unordered_map<K, T, H, P, A>& m2) noexcept(noexcept(m1.swap(m2)))
2202
1719
  {
2203
1720
  #if BOOST_WORKAROUND(BOOST_CODEGEARC, BOOST_TESTED_AT(0x0613))
2204
1721
  struct dummy
@@ -2248,8 +1765,7 @@ namespace boost {
2248
1765
  select_on_container_copy_construction(other.get_allocator()))
2249
1766
  {
2250
1767
  if (other.table_.size_) {
2251
- table_.copy_buckets(
2252
- other.table_, boost::unordered::detail::false_type());
1768
+ table_.copy_buckets(other.table_, std::false_type());
2253
1769
  }
2254
1770
  }
2255
1771
 
@@ -2267,21 +1783,18 @@ namespace boost {
2267
1783
  : table_(other.table_, a)
2268
1784
  {
2269
1785
  if (other.table_.size_) {
2270
- table_.copy_buckets(
2271
- other.table_, boost::unordered::detail::false_type());
1786
+ table_.copy_buckets(other.table_, std::false_type());
2272
1787
  }
2273
1788
  }
2274
1789
 
2275
1790
  template <class K, class T, class H, class P, class A>
2276
1791
  unordered_multimap<K, T, H, P, A>::unordered_multimap(
2277
- BOOST_RV_REF(unordered_multimap) other, allocator_type const& a)
1792
+ unordered_multimap&& other, allocator_type const& a)
2278
1793
  : table_(other.table_, a, boost::unordered::detail::move_tag())
2279
1794
  {
2280
1795
  table_.move_construct_buckets(other.table_);
2281
1796
  }
2282
1797
 
2283
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
2284
-
2285
1798
  template <class K, class T, class H, class P, class A>
2286
1799
  unordered_multimap<K, T, H, P, A>::unordered_multimap(
2287
1800
  std::initializer_list<value_type> list, size_type n, const hasher& hf,
@@ -2293,8 +1806,6 @@ namespace boost {
2293
1806
  this->insert(list.begin(), list.end());
2294
1807
  }
2295
1808
 
2296
- #endif
2297
-
2298
1809
  template <class K, class T, class H, class P, class A>
2299
1810
  unordered_multimap<K, T, H, P, A>::unordered_multimap(
2300
1811
  size_type n, const allocator_type& a)
@@ -2340,8 +1851,6 @@ namespace boost {
2340
1851
  this->insert(f, l);
2341
1852
  }
2342
1853
 
2343
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
2344
-
2345
1854
  template <class K, class T, class H, class P, class A>
2346
1855
  unordered_multimap<K, T, H, P, A>::unordered_multimap(
2347
1856
  std::initializer_list<value_type> list, const allocator_type& a)
@@ -2374,31 +1883,25 @@ namespace boost {
2374
1883
  this->insert(list.begin(), list.end());
2375
1884
  }
2376
1885
 
2377
- #endif
2378
-
2379
1886
  template <class K, class T, class H, class P, class A>
2380
- unordered_multimap<K, T, H, P, A>::~unordered_multimap() BOOST_NOEXCEPT
1887
+ unordered_multimap<K, T, H, P, A>::~unordered_multimap() noexcept
2381
1888
  {
2382
1889
  }
2383
1890
 
2384
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
2385
-
2386
1891
  template <class K, class T, class H, class P, class A>
2387
- unordered_multimap<K, T, H, P, A>& unordered_multimap<K, T, H, P, A>::
2388
- operator=(std::initializer_list<value_type> list)
1892
+ unordered_multimap<K, T, H, P, A>&
1893
+ unordered_multimap<K, T, H, P, A>::operator=(
1894
+ std::initializer_list<value_type> list)
2389
1895
  {
2390
1896
  this->clear();
2391
1897
  this->insert(list.begin(), list.end());
2392
1898
  return *this;
2393
1899
  }
2394
1900
 
2395
- #endif
2396
-
2397
1901
  // size and capacity
2398
1902
 
2399
1903
  template <class K, class T, class H, class P, class A>
2400
- std::size_t
2401
- unordered_multimap<K, T, H, P, A>::max_size() const BOOST_NOEXCEPT
1904
+ std::size_t unordered_multimap<K, T, H, P, A>::max_size() const noexcept
2402
1905
  {
2403
1906
  using namespace std;
2404
1907
 
@@ -2418,14 +1921,12 @@ namespace boost {
2418
1921
  table_.insert_range_equiv(first, last);
2419
1922
  }
2420
1923
 
2421
- #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
2422
1924
  template <class K, class T, class H, class P, class A>
2423
1925
  void unordered_multimap<K, T, H, P, A>::insert(
2424
1926
  std::initializer_list<value_type> list)
2425
1927
  {
2426
1928
  this->insert(list.begin(), list.end());
2427
1929
  }
2428
- #endif
2429
1930
 
2430
1931
  template <class K, class T, class H, class P, class A>
2431
1932
  typename unordered_multimap<K, T, H, P, A>::iterator
@@ -2460,9 +1961,9 @@ namespace boost {
2460
1961
 
2461
1962
  template <class K, class T, class H, class P, class A>
2462
1963
  void unordered_multimap<K, T, H, P, A>::swap(unordered_multimap& other)
2463
- BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
2464
- boost::is_nothrow_swappable<H>::value&&
2465
- boost::is_nothrow_swappable<P>::value)
1964
+ noexcept(value_allocator_traits::is_always_equal::value&&
1965
+ boost::unordered::detail::is_nothrow_swappable<H>::value&&
1966
+ boost::unordered::detail::is_nothrow_swappable<P>::value)
2466
1967
  {
2467
1968
  table_.swap(other.table_);
2468
1969
  }
@@ -2493,7 +1994,6 @@ namespace boost {
2493
1994
  }
2494
1995
  }
2495
1996
 
2496
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
2497
1997
  template <class K, class T, class H, class P, class A>
2498
1998
  template <typename H2, typename P2>
2499
1999
  void unordered_multimap<K, T, H, P, A>::merge(
@@ -2503,7 +2003,6 @@ namespace boost {
2503
2003
  insert(source.extract(source.begin()));
2504
2004
  }
2505
2005
  }
2506
- #endif
2507
2006
 
2508
2007
  template <class K, class T, class H, class P, class A>
2509
2008
  template <typename H2, typename P2>
@@ -2515,7 +2014,6 @@ namespace boost {
2515
2014
  }
2516
2015
  }
2517
2016
 
2518
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
2519
2017
  template <class K, class T, class H, class P, class A>
2520
2018
  template <typename H2, typename P2>
2521
2019
  void unordered_multimap<K, T, H, P, A>::merge(
@@ -2525,7 +2023,6 @@ namespace boost {
2525
2023
  insert(source.extract(source.begin()));
2526
2024
  }
2527
2025
  }
2528
- #endif
2529
2026
 
2530
2027
  // lookup
2531
2028
 
@@ -2560,8 +2057,7 @@ namespace boost {
2560
2057
  unordered_multimap<K, T, H, P, A>::find(CompatibleKey const& k,
2561
2058
  CompatibleHash const& hash, CompatiblePredicate const& eq) const
2562
2059
  {
2563
- return const_iterator(
2564
- table_.find_node_impl(table::policy::apply_hash(hash, k), k, eq));
2060
+ return table_.transparent_find(k, hash, eq);
2565
2061
  }
2566
2062
 
2567
2063
  template <class K, class T, class H, class P, class A>
@@ -2600,7 +2096,7 @@ namespace boost {
2600
2096
  // hash policy
2601
2097
 
2602
2098
  template <class K, class T, class H, class P, class A>
2603
- float unordered_multimap<K, T, H, P, A>::load_factor() const BOOST_NOEXCEPT
2099
+ float unordered_multimap<K, T, H, P, A>::load_factor() const noexcept
2604
2100
  {
2605
2101
  if (table_.size_ == 0) {
2606
2102
  return 0.0f;
@@ -2612,8 +2108,7 @@ namespace boost {
2612
2108
  }
2613
2109
 
2614
2110
  template <class K, class T, class H, class P, class A>
2615
- void unordered_multimap<K, T, H, P, A>::max_load_factor(
2616
- float m) BOOST_NOEXCEPT
2111
+ void unordered_multimap<K, T, H, P, A>::max_load_factor(float m) noexcept
2617
2112
  {
2618
2113
  table_.max_load_factor(m);
2619
2114
  }
@@ -2658,8 +2153,7 @@ namespace boost {
2658
2153
 
2659
2154
  template <class K, class T, class H, class P, class A>
2660
2155
  inline void swap(unordered_multimap<K, T, H, P, A>& m1,
2661
- unordered_multimap<K, T, H, P, A>& m2)
2662
- BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(m1.swap(m2)))
2156
+ unordered_multimap<K, T, H, P, A>& m2) noexcept(noexcept(m1.swap(m2)))
2663
2157
  {
2664
2158
  #if BOOST_WORKAROUND(BOOST_CODEGEARC, BOOST_TESTED_AT(0x0613))
2665
2159
  struct dummy
@@ -2679,8 +2173,6 @@ namespace boost {
2679
2173
 
2680
2174
  template <typename N, class K, class T, class A> class node_handle_map
2681
2175
  {
2682
- BOOST_MOVABLE_BUT_NOT_COPYABLE(node_handle_map)
2683
-
2684
2176
  template <typename Types> friend struct ::boost::unordered::detail::table;
2685
2177
  template <class K2, class T2, class H2, class P2, class A2>
2686
2178
  friend class boost::unordered::unordered_map;
@@ -2711,7 +2203,9 @@ namespace boost {
2711
2203
  }
2712
2204
 
2713
2205
  public:
2714
- BOOST_CONSTEXPR node_handle_map() BOOST_NOEXCEPT : ptr_(), alloc_() {}
2206
+ constexpr node_handle_map() noexcept : ptr_(), alloc_() {}
2207
+ node_handle_map(node_handle_map const&) = delete;
2208
+ node_handle_map& operator=(node_handle_map const&) = delete;
2715
2209
 
2716
2210
  ~node_handle_map()
2717
2211
  {
@@ -2722,14 +2216,14 @@ namespace boost {
2722
2216
  }
2723
2217
  }
2724
2218
 
2725
- node_handle_map(BOOST_RV_REF(node_handle_map) n) BOOST_NOEXCEPT
2219
+ node_handle_map(node_handle_map&& n) noexcept
2726
2220
  : ptr_(n.ptr_),
2727
- alloc_(boost::move(n.alloc_))
2221
+ alloc_(std::move(n.alloc_))
2728
2222
  {
2729
2223
  n.ptr_ = node_pointer();
2730
2224
  }
2731
2225
 
2732
- node_handle_map& operator=(BOOST_RV_REF(node_handle_map) n)
2226
+ node_handle_map& operator=(node_handle_map&& n)
2733
2227
  {
2734
2228
  BOOST_ASSERT(!alloc_.has_value() ||
2735
2229
  boost::allocator_propagate_on_container_move_assignment<
@@ -2746,7 +2240,7 @@ namespace boost {
2746
2240
  if (!alloc_.has_value() ||
2747
2241
  boost::allocator_propagate_on_container_move_assignment<
2748
2242
  value_allocator>::type::value) {
2749
- alloc_ = boost::move(n.alloc_);
2243
+ alloc_ = std::move(n.alloc_);
2750
2244
  }
2751
2245
  ptr_ = n.ptr_;
2752
2246
  n.ptr_ = node_pointer();
@@ -2763,19 +2257,22 @@ namespace boost {
2763
2257
 
2764
2258
  allocator_type get_allocator() const { return *alloc_; }
2765
2259
 
2766
- BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()
2260
+ explicit operator bool() const noexcept
2261
+ {
2262
+ return !this->operator!();
2263
+ }
2767
2264
 
2768
- bool operator!() const BOOST_NOEXCEPT { return ptr_ ? 0 : 1; }
2265
+ bool operator!() const noexcept { return ptr_ ? 0 : 1; }
2769
2266
 
2770
- BOOST_ATTRIBUTE_NODISCARD bool empty() const BOOST_NOEXCEPT
2267
+ BOOST_ATTRIBUTE_NODISCARD bool empty() const noexcept
2771
2268
  {
2772
2269
  return ptr_ ? 0 : 1;
2773
2270
  }
2774
2271
 
2775
- void swap(node_handle_map& n) BOOST_NOEXCEPT_IF(
2776
- boost::allocator_propagate_on_container_swap<
2777
- value_allocator>::type::value ||
2778
- boost::allocator_is_always_equal<value_allocator>::type::value)
2272
+ void swap(node_handle_map& n)
2273
+ noexcept(boost::allocator_propagate_on_container_swap<
2274
+ value_allocator>::type::value ||
2275
+ boost::allocator_is_always_equal<value_allocator>::type::value)
2779
2276
  {
2780
2277
 
2781
2278
  BOOST_ASSERT(!alloc_.has_value() || !n.alloc_.has_value() ||
@@ -2785,47 +2282,42 @@ namespace boost {
2785
2282
  if (boost::allocator_propagate_on_container_swap<
2786
2283
  value_allocator>::type::value ||
2787
2284
  !alloc_.has_value() || !n.alloc_.has_value()) {
2788
- boost::swap(alloc_, n.alloc_);
2285
+ boost::core::invoke_swap(alloc_, n.alloc_);
2789
2286
  }
2790
- boost::swap(ptr_, n.ptr_);
2287
+ boost::core::invoke_swap(ptr_, n.ptr_);
2791
2288
  }
2792
2289
  };
2793
2290
 
2794
2291
  template <class N, class K, class T, class A>
2795
2292
  void swap(node_handle_map<N, K, T, A>& x, node_handle_map<N, K, T, A>& y)
2796
- BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(x.swap(y)))
2293
+ noexcept(noexcept(x.swap(y)))
2797
2294
  {
2798
2295
  x.swap(y);
2799
2296
  }
2800
2297
 
2801
2298
  template <class Iter, class NodeType> struct insert_return_type_map
2802
2299
  {
2803
- private:
2804
- BOOST_MOVABLE_BUT_NOT_COPYABLE(insert_return_type_map)
2805
-
2806
- // typedef typename boost::allocator_rebind<A,
2807
- // std::pair<K const, T> >::type value_allocator;
2808
- // typedef N node_;
2809
-
2810
2300
  public:
2811
2301
  Iter position;
2812
2302
  bool inserted;
2813
2303
  NodeType node;
2814
2304
 
2815
2305
  insert_return_type_map() : position(), inserted(false), node() {}
2306
+ insert_return_type_map(insert_return_type_map const&) = delete;
2307
+ insert_return_type_map& operator=(insert_return_type_map const&) = delete;
2816
2308
 
2817
- insert_return_type_map(BOOST_RV_REF(insert_return_type_map)
2818
- x) BOOST_NOEXCEPT : position(x.position),
2819
- inserted(x.inserted),
2820
- node(boost::move(x.node))
2309
+ insert_return_type_map(insert_return_type_map&& x) noexcept
2310
+ : position(x.position),
2311
+ inserted(x.inserted),
2312
+ node(std::move(x.node))
2821
2313
  {
2822
2314
  }
2823
2315
 
2824
- insert_return_type_map& operator=(BOOST_RV_REF(insert_return_type_map) x)
2316
+ insert_return_type_map& operator=(insert_return_type_map&& x)
2825
2317
  {
2826
2318
  inserted = x.inserted;
2827
2319
  position = x.position;
2828
- node = boost::move(x.node);
2320
+ node = std::move(x.node);
2829
2321
  return *this;
2830
2322
  }
2831
2323
  };
@@ -2834,11 +2326,26 @@ namespace boost {
2834
2326
  void swap(insert_return_type_map<Iter, NodeType>& x,
2835
2327
  insert_return_type_map<Iter, NodeType>& y)
2836
2328
  {
2837
- boost::swap(x.node, y.node);
2838
- boost::swap(x.inserted, y.inserted);
2839
- boost::swap(x.position, y.position);
2329
+ boost::core::invoke_swap(x.node, y.node);
2330
+ boost::core::invoke_swap(x.inserted, y.inserted);
2331
+ boost::core::invoke_swap(x.position, y.position);
2840
2332
  }
2841
2333
  } // namespace unordered
2334
+
2335
+ namespace serialization {
2336
+ template <class K, class T, class H, class P, class A>
2337
+ struct version<boost::unordered_map<K, T, H, P, A> >
2338
+ {
2339
+ BOOST_STATIC_CONSTANT(int, value = 1);
2340
+ };
2341
+
2342
+ template <class K, class T, class H, class P, class A>
2343
+ struct version<boost::unordered_multimap<K, T, H, P, A> >
2344
+ {
2345
+ BOOST_STATIC_CONSTANT(int, value = 1);
2346
+ };
2347
+ } // namespace serialization
2348
+
2842
2349
  } // namespace boost
2843
2350
 
2844
2351
  #if defined(BOOST_MSVC)