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,8 @@
1
1
  // Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
2
2
  // Copyright (C) 2005-2016 Daniel James
3
- // Copyright (C) 2022 Joaquin M Lopez Munoz.
4
- // Copyright (C) 2022 Christian Mazakas
3
+ // Copyright (C) 2022-2024 Joaquin M Lopez Munoz.
4
+ // Copyright (C) 2022-2023 Christian Mazakas
5
+ // Copyright (C) 2024 Braden Ganetsky
5
6
  //
6
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
7
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -14,142 +15,38 @@
14
15
  #pragma once
15
16
  #endif
16
17
 
18
+ #include <boost/unordered/detail/allocator_constructed.hpp>
19
+ #include <boost/unordered/detail/fca.hpp>
20
+ #include <boost/unordered/detail/opt_storage.hpp>
21
+ #include <boost/unordered/detail/serialize_tracked_address.hpp>
22
+ #include <boost/unordered/detail/static_assert.hpp>
23
+ #include <boost/unordered/detail/type_traits.hpp>
24
+
17
25
  #include <boost/assert.hpp>
18
26
  #include <boost/core/allocator_traits.hpp>
19
27
  #include <boost/core/bit.hpp>
28
+ #include <boost/core/invoke_swap.hpp>
20
29
  #include <boost/core/no_exceptions_support.hpp>
21
30
  #include <boost/core/pointer_traits.hpp>
22
- #include <boost/limits.hpp>
23
- #include <boost/move/move.hpp>
24
- #include <boost/preprocessor/arithmetic/inc.hpp>
25
- #include <boost/preprocessor/cat.hpp>
26
- #include <boost/preprocessor/repetition/enum.hpp>
27
- #include <boost/preprocessor/repetition/enum_binary_params.hpp>
28
- #include <boost/preprocessor/repetition/enum_params.hpp>
29
- #include <boost/preprocessor/repetition/repeat_from_to.hpp>
30
- #include <boost/preprocessor/seq/enum.hpp>
31
- #include <boost/preprocessor/seq/size.hpp>
32
- #include <boost/swap.hpp>
31
+ #include <boost/core/serialization.hpp>
32
+ #include <boost/mp11/algorithm.hpp>
33
+ #include <boost/mp11/list.hpp>
33
34
  #include <boost/throw_exception.hpp>
34
- #include <boost/tuple/tuple.hpp>
35
- #include <boost/type_traits/add_lvalue_reference.hpp>
36
- #include <boost/type_traits/aligned_storage.hpp>
37
- #include <boost/type_traits/alignment_of.hpp>
38
- #include <boost/type_traits/integral_constant.hpp>
39
- #include <boost/type_traits/is_base_of.hpp>
40
- #include <boost/type_traits/is_class.hpp>
41
- #include <boost/type_traits/is_convertible.hpp>
42
- #include <boost/type_traits/is_empty.hpp>
43
- #include <boost/type_traits/is_nothrow_move_assignable.hpp>
44
- #include <boost/type_traits/is_nothrow_move_constructible.hpp>
45
- #include <boost/type_traits/is_nothrow_swappable.hpp>
46
- #include <boost/type_traits/is_same.hpp>
47
- #include <boost/type_traits/make_void.hpp>
48
- #include <boost/type_traits/remove_const.hpp>
49
- #include <boost/unordered/detail/fca.hpp>
50
- #include <boost/unordered/detail/type_traits.hpp>
51
- #include <boost/unordered/detail/fwd.hpp>
52
- #include <boost/utility/addressof.hpp>
53
- #include <boost/utility/enable_if.hpp>
35
+
36
+ #include <algorithm>
54
37
  #include <cmath>
55
38
  #include <iterator>
39
+ #include <limits>
56
40
  #include <stdexcept>
57
- #include <utility>
58
-
59
- #if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
60
41
  #include <type_traits>
61
- #endif
62
-
63
- ////////////////////////////////////////////////////////////////////////////////
64
- // Configuration
65
- //
66
- // Unless documented elsewhere these configuration macros should be considered
67
- // an implementation detail, I'll try not to break them, but you never know.
68
-
69
- // Use Sun C++ workarounds
70
- // I'm not sure which versions of the compiler require these workarounds, so
71
- // I'm just using them of everything older than the current test compilers
72
- // (as of May 2017).
73
-
74
- #if !defined(BOOST_UNORDERED_SUN_WORKAROUNDS1)
75
- #if BOOST_COMP_SUNPRO && BOOST_COMP_SUNPRO < BOOST_VERSION_NUMBER(5, 20, 0)
76
- #define BOOST_UNORDERED_SUN_WORKAROUNDS1 1
77
- #else
78
- #define BOOST_UNORDERED_SUN_WORKAROUNDS1 0
79
- #endif
80
- #endif
81
-
82
- // BOOST_UNORDERED_EMPLACE_LIMIT = The maximum number of parameters in
83
- // emplace (not including things like hints). Don't set it to a lower value, as
84
- // that might break something.
85
-
86
- #if !defined BOOST_UNORDERED_EMPLACE_LIMIT
87
- #define BOOST_UNORDERED_EMPLACE_LIMIT 10
88
- #endif
89
-
90
- // BOOST_UNORDERED_TUPLE_ARGS
91
- //
92
- // Maximum number of std::tuple members to support, or 0 if std::tuple
93
- // isn't avaiable. More are supported when full C++11 is used.
94
-
95
- // Already defined, so do nothing
96
- #if defined(BOOST_UNORDERED_TUPLE_ARGS)
97
-
98
- // Assume if we have C++11 tuple it's properly variadic,
99
- // and just use a max number of 10 arguments.
100
- #elif !defined(BOOST_NO_CXX11_HDR_TUPLE)
101
- #define BOOST_UNORDERED_TUPLE_ARGS 10
102
-
103
- // Visual C++ has a decent enough tuple for piecewise construction,
104
- // so use that if available, using _VARIADIC_MAX for the maximum
105
- // number of parameters. Note that this comes after the check
106
- // for a full C++11 tuple.
107
- #elif defined(BOOST_MSVC)
108
- #if !BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT
109
- #define BOOST_UNORDERED_TUPLE_ARGS 0
110
- #elif defined(_VARIADIC_MAX)
111
- #define BOOST_UNORDERED_TUPLE_ARGS _VARIADIC_MAX
112
- #else
113
- #define BOOST_UNORDERED_TUPLE_ARGS 5
114
- #endif
115
-
116
- // Assume that we don't have std::tuple
117
- #else
118
- #define BOOST_UNORDERED_TUPLE_ARGS 0
119
- #endif
120
-
121
- #if BOOST_UNORDERED_TUPLE_ARGS
122
- #include <tuple>
123
- #endif
124
-
125
- // BOOST_UNORDERED_CXX11_CONSTRUCTION
126
- //
127
- // Use C++11 construction, requires variadic arguments, good construct support
128
- // in allocator_traits and piecewise construction of std::pair
129
- // Otherwise allocators aren't used for construction/destruction
130
-
131
- #if BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT && \
132
- !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && BOOST_UNORDERED_TUPLE_ARGS
133
- #if BOOST_COMP_SUNPRO && BOOST_LIB_STD_GNU
134
- // Sun C++ std::pair piecewise construction doesn't seem to be exception safe.
135
- // (At least for Sun C++ 12.5 using libstdc++).
136
- #define BOOST_UNORDERED_CXX11_CONSTRUCTION 0
137
- #elif BOOST_COMP_GNUC && BOOST_COMP_GNUC < BOOST_VERSION_NUMBER(4, 7, 0)
138
- // Piecewise construction in GCC 4.6 doesn't work for uncopyable types.
139
- #define BOOST_UNORDERED_CXX11_CONSTRUCTION 0
140
- #elif !defined(BOOST_NO_CXX11_ALLOCATOR)
141
- #define BOOST_UNORDERED_CXX11_CONSTRUCTION 1
142
- #endif
143
- #endif
144
-
145
- #if !defined(BOOST_UNORDERED_CXX11_CONSTRUCTION)
146
- #define BOOST_UNORDERED_CXX11_CONSTRUCTION 0
147
- #endif
42
+ #include <utility>
43
+ #include <tuple> // std::forward_as_tuple
148
44
 
149
- #if BOOST_UNORDERED_CXX11_CONSTRUCTION
150
- #include <boost/mp11/list.hpp>
151
- #include <boost/mp11/algorithm.hpp>
152
- #endif
45
+ namespace boost {
46
+ namespace tuples {
47
+ struct null_type;
48
+ }
49
+ } // namespace boost
153
50
 
154
51
  // BOOST_UNORDERED_SUPPRESS_DEPRECATED
155
52
  //
@@ -184,6 +81,10 @@
184
81
 
185
82
  namespace boost {
186
83
  namespace unordered {
84
+
85
+ using std::piecewise_construct;
86
+ using std::piecewise_construct_t;
87
+
187
88
  namespace detail {
188
89
 
189
90
  template <typename Types> struct table;
@@ -205,37 +106,41 @@ namespace boost {
205
106
  template <class T> no_key(T const&) {}
206
107
  };
207
108
 
109
+ struct converting_key
110
+ {
111
+ };
112
+
208
113
  namespace func {
209
114
  template <class T> inline void ignore_unused_variable_warning(T const&)
210
115
  {
211
116
  }
212
- }
117
+ } // namespace func
213
118
 
214
119
  //////////////////////////////////////////////////////////////////////////
215
120
  // iterator SFINAE
216
121
 
217
122
  template <typename I>
218
- struct is_forward : boost::is_base_of<std::forward_iterator_tag,
123
+ struct is_forward : std::is_base_of<std::forward_iterator_tag,
219
124
  typename std::iterator_traits<I>::iterator_category>
220
125
  {
221
126
  };
222
127
 
223
128
  template <typename I, typename ReturnType>
224
129
  struct enable_if_forward
225
- : boost::enable_if_c<boost::unordered::detail::is_forward<I>::value,
226
- ReturnType>
130
+ : std::enable_if<boost::unordered::detail::is_forward<I>::value,
131
+ ReturnType>
227
132
  {
228
133
  };
229
134
 
230
135
  template <typename I, typename ReturnType>
231
136
  struct disable_if_forward
232
- : boost::disable_if_c<boost::unordered::detail::is_forward<I>::value,
233
- ReturnType>
137
+ : std::enable_if<!boost::unordered::detail::is_forward<I>::value,
138
+ ReturnType>
234
139
  {
235
140
  };
236
- }
237
- }
238
- }
141
+ } // namespace detail
142
+ } // namespace unordered
143
+ } // namespace boost
239
144
 
240
145
  namespace boost {
241
146
  namespace unordered {
@@ -253,7 +158,8 @@ namespace boost {
253
158
 
254
159
  template <class I>
255
160
  inline typename boost::unordered::detail::disable_if_forward<I,
256
- std::size_t>::type insert_size(I, I)
161
+ std::size_t>::type
162
+ insert_size(I, I)
257
163
  {
258
164
  return 1;
259
165
  }
@@ -277,7 +183,7 @@ namespace boost {
277
183
  {
278
184
  }
279
185
  compressed_base(T& x, move_tag)
280
- : empty_value<T>(boost::empty_init_t(), boost::move(x))
186
+ : empty_value<T>(boost::empty_init_t(), std::move(x))
281
187
  {
282
188
  }
283
189
 
@@ -295,8 +201,8 @@ namespace boost {
295
201
 
296
202
  template <typename T1, typename T2>
297
203
  struct compressed
298
- : private boost::unordered::detail::generate_base<T1, 1>::type,
299
- private boost::unordered::detail::generate_base<T2, 2>::type
204
+ : private boost::unordered::detail::generate_base<T1, 1>::type,
205
+ private boost::unordered::detail::generate_base<T2, 2>::type
300
206
  {
301
207
  typedef typename generate_base<T1, 1>::type base1;
302
208
  typedef typename generate_base<T2, 2>::type base2;
@@ -338,14 +244,14 @@ namespace boost {
338
244
 
339
245
  void move_assign(compressed& x)
340
246
  {
341
- first() = boost::move(x.first());
342
- second() = boost::move(x.second());
247
+ first() = std::move(x.first());
248
+ second() = std::move(x.second());
343
249
  }
344
250
 
345
251
  void swap(compressed& x)
346
252
  {
347
- boost::swap(first(), x.first());
348
- boost::swap(second(), x.second());
253
+ boost::core::invoke_swap(first(), x.first());
254
+ boost::core::invoke_swap(second(), x.second());
349
255
  }
350
256
 
351
257
  private:
@@ -382,37 +288,8 @@ namespace boost {
382
288
  //////////////////////////////////////////////////////////////////////////
383
289
  // Bits and pieces for implementing traits
384
290
 
385
- template <typename T>
386
- typename boost::add_lvalue_reference<T>::type make();
387
- struct choice9
388
- {
389
- typedef char (&type)[9];
390
- };
391
- struct choice8 : choice9
392
- {
393
- typedef char (&type)[8];
394
- };
395
- struct choice7 : choice8
396
- {
397
- typedef char (&type)[7];
398
- };
399
- struct choice6 : choice7
400
- {
401
- typedef char (&type)[6];
402
- };
403
- struct choice5 : choice6
404
- {
405
- typedef char (&type)[5];
406
- };
407
- struct choice4 : choice5
408
- {
409
- typedef char (&type)[4];
410
- };
411
- struct choice3 : choice4
412
- {
413
- typedef char (&type)[3];
414
- };
415
- struct choice2 : choice3
291
+ template <typename T> typename std::add_lvalue_reference<T>::type make();
292
+ struct choice2
416
293
  {
417
294
  typedef char (&type)[2];
418
295
  };
@@ -437,139 +314,9 @@ namespace boost {
437
314
  {
438
315
  template <typename T> convert_from_anything(T const&);
439
316
  };
440
- }
441
- }
442
- }
443
-
444
- ////////////////////////////////////////////////////////////////////////////
445
- // emplace_args
446
- //
447
- // Either forwarding variadic arguments, or storing the arguments in
448
- // emplace_args##n
449
-
450
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
451
-
452
- #define BOOST_UNORDERED_EMPLACE_TEMPLATE typename... Args
453
- #define BOOST_UNORDERED_EMPLACE_ARGS BOOST_FWD_REF(Args)... args
454
- #define BOOST_UNORDERED_EMPLACE_FORWARD boost::forward<Args>(args)...
455
-
456
- #else
457
-
458
- #define BOOST_UNORDERED_EMPLACE_TEMPLATE typename Args
459
- #define BOOST_UNORDERED_EMPLACE_ARGS Args const& args
460
- #define BOOST_UNORDERED_EMPLACE_FORWARD args
461
-
462
- #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
463
-
464
- #define BOOST_UNORDERED_EARGS_MEMBER(z, n, _) \
465
- typedef BOOST_FWD_REF(BOOST_PP_CAT(A, n)) BOOST_PP_CAT(Arg, n); \
466
- BOOST_PP_CAT(Arg, n) BOOST_PP_CAT(a, n);
467
-
468
- #else
469
-
470
- #define BOOST_UNORDERED_EARGS_MEMBER(z, n, _) \
471
- typedef typename boost::add_lvalue_reference<BOOST_PP_CAT(A, n)>::type \
472
- BOOST_PP_CAT(Arg, n); \
473
- BOOST_PP_CAT(Arg, n) BOOST_PP_CAT(a, n);
474
-
475
- #endif
476
-
477
- #define BOOST_UNORDERED_FWD_PARAM(z, n, a) \
478
- BOOST_FWD_REF(BOOST_PP_CAT(A, n)) BOOST_PP_CAT(a, n)
479
-
480
- #define BOOST_UNORDERED_CALL_FORWARD(z, i, a) \
481
- boost::forward<BOOST_PP_CAT(A, i)>(BOOST_PP_CAT(a, i))
482
-
483
- #define BOOST_UNORDERED_EARGS_INIT(z, n, _) \
484
- BOOST_PP_CAT(a, n)(BOOST_PP_CAT(b, n))
485
-
486
- #define BOOST_UNORDERED_EARGS(z, n, _) \
487
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
488
- struct BOOST_PP_CAT(emplace_args, n) \
489
- { \
490
- BOOST_PP_REPEAT_##z(n, BOOST_UNORDERED_EARGS_MEMBER, _) BOOST_PP_CAT( \
491
- emplace_args, n)(BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, Arg, b)) \
492
- : BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_EARGS_INIT, _) \
493
- { \
494
- } \
495
- }; \
496
- \
497
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
498
- inline BOOST_PP_CAT(emplace_args, n)<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> \
499
- create_emplace_args(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, b)) \
500
- { \
501
- BOOST_PP_CAT(emplace_args, n)<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> e( \
502
- BOOST_PP_ENUM_PARAMS_Z(z, n, b)); \
503
- return e; \
504
- }
505
-
506
- namespace boost {
507
- namespace unordered {
508
- namespace detail {
509
- template <typename A0> struct emplace_args1
510
- {
511
- BOOST_UNORDERED_EARGS_MEMBER(1, 0, _)
512
-
513
- explicit emplace_args1(Arg0 b0) : a0(b0) {}
514
- };
515
-
516
- template <typename A0>
517
- inline emplace_args1<A0> create_emplace_args(BOOST_FWD_REF(A0) b0)
518
- {
519
- emplace_args1<A0> e(b0);
520
- return e;
521
- }
522
-
523
- template <typename A0, typename A1> struct emplace_args2
524
- {
525
- BOOST_UNORDERED_EARGS_MEMBER(1, 0, _)
526
- BOOST_UNORDERED_EARGS_MEMBER(1, 1, _)
527
-
528
- emplace_args2(Arg0 b0, Arg1 b1) : a0(b0), a1(b1) {}
529
- };
530
-
531
- template <typename A0, typename A1>
532
- inline emplace_args2<A0, A1> create_emplace_args(
533
- BOOST_FWD_REF(A0) b0, BOOST_FWD_REF(A1) b1)
534
- {
535
- emplace_args2<A0, A1> e(b0, b1);
536
- return e;
537
- }
538
-
539
- template <typename A0, typename A1, typename A2> struct emplace_args3
540
- {
541
- BOOST_UNORDERED_EARGS_MEMBER(1, 0, _)
542
- BOOST_UNORDERED_EARGS_MEMBER(1, 1, _)
543
- BOOST_UNORDERED_EARGS_MEMBER(1, 2, _)
544
-
545
- emplace_args3(Arg0 b0, Arg1 b1, Arg2 b2) : a0(b0), a1(b1), a2(b2) {}
546
- };
547
-
548
- template <typename A0, typename A1, typename A2>
549
- inline emplace_args3<A0, A1, A2> create_emplace_args(
550
- BOOST_FWD_REF(A0) b0, BOOST_FWD_REF(A1) b1, BOOST_FWD_REF(A2) b2)
551
- {
552
- emplace_args3<A0, A1, A2> e(b0, b1, b2);
553
- return e;
554
- }
555
-
556
- BOOST_UNORDERED_EARGS(1, 4, _)
557
- BOOST_UNORDERED_EARGS(1, 5, _)
558
- BOOST_UNORDERED_EARGS(1, 6, _)
559
- BOOST_UNORDERED_EARGS(1, 7, _)
560
- BOOST_UNORDERED_EARGS(1, 8, _)
561
- BOOST_UNORDERED_EARGS(1, 9, _)
562
- BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
563
- BOOST_UNORDERED_EARGS, _)
564
- }
565
- }
566
- }
567
-
568
- #undef BOOST_UNORDERED_DEFINE_EMPLACE_ARGS
569
- #undef BOOST_UNORDERED_EARGS_MEMBER
570
- #undef BOOST_UNORDERED_EARGS_INIT
571
-
572
- #endif
317
+ } // namespace detail
318
+ } // namespace unordered
319
+ } // namespace boost
573
320
 
574
321
  ////////////////////////////////////////////////////////////////////////////////
575
322
  //
@@ -580,35 +327,8 @@ namespace boost {
580
327
  namespace unordered {
581
328
  namespace detail {
582
329
 
583
- ////////////////////////////////////////////////////////////////////////////
584
- // Integral_constrant, true_type, false_type
585
- //
586
- // Uses the standard versions if available.
587
-
588
- #if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
589
-
590
- using std::integral_constant;
591
- using std::true_type;
592
- using std::false_type;
593
-
594
- #else
595
-
596
- template <typename T, T Value> struct integral_constant
597
- {
598
- enum
599
- {
600
- value = Value
601
- };
602
- };
603
-
604
- typedef boost::unordered::detail::integral_constant<bool, true> true_type;
605
- typedef boost::unordered::detail::integral_constant<bool, false>
606
- false_type;
607
-
608
- #endif
609
-
610
- ////////////////////////////////////////////////////////////////////////////
611
- // Explicitly call a destructor
330
+ ////////////////////////////////////////////////////////////////////////////
331
+ // Explicitly call a destructor
612
332
 
613
333
  #if defined(BOOST_MSVC)
614
334
  #pragma warning(push)
@@ -617,7 +337,7 @@ namespace boost {
617
337
 
618
338
  namespace func {
619
339
  template <class T> inline void destroy(T* x) { x->~T(); }
620
- }
340
+ } // namespace func
621
341
 
622
342
  #if defined(BOOST_MSVC)
623
343
  #pragma warning(pop)
@@ -632,8 +352,7 @@ namespace boost {
632
352
  {
633
353
  typedef ValueType value_type;
634
354
 
635
- typename boost::aligned_storage<sizeof(value_type),
636
- boost::alignment_of<value_type>::value>::type data_;
355
+ opt_storage<value_type> data_;
637
356
 
638
357
  value_base() : data_() {}
639
358
 
@@ -657,8 +376,6 @@ namespace boost {
657
376
 
658
377
  template <typename T> class optional
659
378
  {
660
- BOOST_MOVABLE_BUT_NOT_COPYABLE(optional)
661
-
662
379
  boost::unordered::detail::value_base<T> value_;
663
380
  bool has_value_;
664
381
 
@@ -673,16 +390,19 @@ namespace boost {
673
390
  void move(optional<T>& x)
674
391
  {
675
392
  BOOST_ASSERT(!has_value_ && x.has_value_);
676
- new (value_.value_ptr()) T(boost::move(x.value_.value()));
393
+ new (value_.value_ptr()) T(std::move(x.value_.value()));
677
394
  boost::unordered::detail::func::destroy(x.value_.value_ptr());
678
395
  has_value_ = true;
679
396
  x.has_value_ = false;
680
397
  }
681
398
 
682
399
  public:
683
- optional() BOOST_NOEXCEPT : has_value_(false) {}
400
+ optional() noexcept : has_value_(false) {}
684
401
 
685
- optional(BOOST_RV_REF(optional<T>) x) : has_value_(false)
402
+ optional(optional const&) = delete;
403
+ optional& operator=(optional const&) = delete;
404
+
405
+ optional(optional<T>&& x) : has_value_(false)
686
406
  {
687
407
  if (x.has_value_) {
688
408
  move(x);
@@ -694,7 +414,7 @@ namespace boost {
694
414
  new (value_.value_ptr()) T(x);
695
415
  }
696
416
 
697
- optional& operator=(BOOST_RV_REF(optional<T>) x)
417
+ optional& operator=(optional<T>&& x)
698
418
  {
699
419
  destroy();
700
420
  if (x.has_value_) {
@@ -728,15 +448,15 @@ namespace boost {
728
448
  move(x);
729
449
  }
730
450
  } else if (has_value_) {
731
- boost::swap(value_.value(), x.value_.value());
451
+ boost::core::invoke_swap(value_.value(), x.value_.value());
732
452
  }
733
453
  }
734
454
 
735
455
  friend void swap(optional<T>& x, optional<T>& y) { x.swap(y); }
736
456
  };
737
- }
738
- }
739
- }
457
+ } // namespace detail
458
+ } // namespace unordered
459
+ } // namespace boost
740
460
 
741
461
  ////////////////////////////////////////////////////////////////////////////////
742
462
  //
@@ -756,209 +476,9 @@ namespace boost {
756
476
  struct rebind_wrap : boost::allocator_rebind<Alloc, T>
757
477
  {
758
478
  };
759
- }
760
- }
761
- }
762
-
763
- ////////////////////////////////////////////////////////////////////////////
764
- // Functions used to construct nodes. Emulates variadic construction,
765
- // piecewise construction etc.
766
-
767
- ////////////////////////////////////////////////////////////////////////////
768
- // construct_value
769
- //
770
- // Only use allocator_traits::construct, allocator_traits::destroy when full
771
- // C++11 support is available.
772
-
773
- #if BOOST_UNORDERED_CXX11_CONSTRUCTION
774
-
775
- #elif !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
776
-
777
- namespace boost {
778
- namespace unordered {
779
- namespace detail {
780
- namespace func {
781
- template <typename T, typename... Args>
782
- inline void construct_value(T* address, BOOST_FWD_REF(Args)... args)
783
- {
784
- new ((void*)address) T(boost::forward<Args>(args)...);
785
- }
786
- }
787
- }
788
- }
789
- }
790
-
791
- #else
792
-
793
- namespace boost {
794
- namespace unordered {
795
- namespace detail {
796
- namespace func {
797
- template <typename T> inline void construct_value(T* address)
798
- {
799
- new ((void*)address) T();
800
- }
801
-
802
- template <typename T, typename A0>
803
- inline void construct_value(T* address, BOOST_FWD_REF(A0) a0)
804
- {
805
- new ((void*)address) T(boost::forward<A0>(a0));
806
- }
807
- }
808
- }
809
- }
810
- }
811
-
812
- #endif
813
-
814
- ////////////////////////////////////////////////////////////////////////////
815
- // Construct from tuple
816
- //
817
- // Used to emulate piecewise construction.
818
-
819
- #define BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(z, n, namespace_) \
820
- template <typename Alloc, typename T, \
821
- BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
822
- void construct_from_tuple(Alloc&, T* ptr, \
823
- namespace_::tuple<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> const& x) \
824
- { \
825
- new ((void*)ptr) \
826
- T(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_GET_TUPLE_ARG, namespace_)); \
827
- }
828
-
829
- #define BOOST_UNORDERED_GET_TUPLE_ARG(z, n, namespace_) namespace_::get<n>(x)
830
-
831
- // construct_from_tuple for boost::tuple
832
- // The workaround for old Sun compilers comes later in the file.
833
-
834
- #if !BOOST_UNORDERED_SUN_WORKAROUNDS1
835
-
836
- namespace boost {
837
- namespace unordered {
838
- namespace detail {
839
- namespace func {
840
- template <typename Alloc, typename T>
841
- void construct_from_tuple(Alloc&, T* ptr, boost::tuple<>)
842
- {
843
- new ((void*)ptr) T();
844
- }
845
-
846
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost)
847
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 2, boost)
848
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 3, boost)
849
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 4, boost)
850
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 5, boost)
851
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 6, boost)
852
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 7, boost)
853
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 8, boost)
854
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 9, boost)
855
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 10, boost)
856
- }
857
- }
858
- }
859
- }
860
-
861
- #endif
862
-
863
- // construct_from_tuple for std::tuple
864
-
865
- #if !BOOST_UNORDERED_CXX11_CONSTRUCTION && BOOST_UNORDERED_TUPLE_ARGS
866
-
867
- namespace boost {
868
- namespace unordered {
869
- namespace detail {
870
- namespace func {
871
- template <typename Alloc, typename T>
872
- void construct_from_tuple(Alloc&, T* ptr, std::tuple<>)
873
- {
874
- new ((void*)ptr) T();
875
- }
876
-
877
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, std)
878
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 2, std)
879
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 3, std)
880
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 4, std)
881
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 5, std)
882
-
883
- #if BOOST_UNORDERED_TUPLE_ARGS >= 6
884
- BOOST_PP_REPEAT_FROM_TO(6, BOOST_PP_INC(BOOST_UNORDERED_TUPLE_ARGS),
885
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE, std)
886
- #endif
887
- }
888
- }
889
- }
890
- }
891
-
892
- #endif
893
-
894
- #undef BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE
895
- #undef BOOST_UNORDERED_GET_TUPLE_ARG
896
-
897
- // construct_from_tuple for boost::tuple on old versions of sunpro.
898
- //
899
- // Old versions of Sun C++ had problems with template overloads of
900
- // boost::tuple, so to fix it I added a distinct type for each length to
901
- // the overloads. That means there's no possible ambiguity between the
902
- // different overloads, so that the compiler doesn't get confused
903
-
904
- #if BOOST_UNORDERED_SUN_WORKAROUNDS1
905
-
906
- #define BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(z, n, namespace_) \
907
- template <typename Alloc, typename T, \
908
- BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
909
- void construct_from_tuple_impl(boost::unordered::detail::func::length<n>, \
910
- Alloc&, T* ptr, \
911
- namespace_::tuple<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> const& x) \
912
- { \
913
- new ((void*)ptr) \
914
- T(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_GET_TUPLE_ARG, namespace_)); \
915
- }
916
-
917
- #define BOOST_UNORDERED_GET_TUPLE_ARG(z, n, namespace_) namespace_::get<n>(x)
918
-
919
- namespace boost {
920
- namespace unordered {
921
- namespace detail {
922
- namespace func {
923
- template <int N> struct length
924
- {
925
- };
926
-
927
- template <typename Alloc, typename T>
928
- void construct_from_tuple_impl(
929
- boost::unordered::detail::func::length<0>, Alloc&, T* ptr,
930
- boost::tuple<>)
931
- {
932
- new ((void*)ptr) T();
933
- }
934
-
935
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost)
936
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 2, boost)
937
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 3, boost)
938
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 4, boost)
939
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 5, boost)
940
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 6, boost)
941
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 7, boost)
942
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 8, boost)
943
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 9, boost)
944
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 10, boost)
945
-
946
- template <typename Alloc, typename T, typename Tuple>
947
- void construct_from_tuple(Alloc& alloc, T* ptr, Tuple const& x)
948
- {
949
- construct_from_tuple_impl(boost::unordered::detail::func::length<
950
- boost::tuples::length<Tuple>::value>(),
951
- alloc, ptr, x);
952
- }
953
- }
954
- }
955
- }
956
- }
957
-
958
- #undef BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE
959
- #undef BOOST_UNORDERED_GET_TUPLE_ARG
960
-
961
- #endif
479
+ } // namespace detail
480
+ } // namespace unordered
481
+ } // namespace boost
962
482
 
963
483
  namespace boost {
964
484
  namespace unordered {
@@ -969,8 +489,7 @@ namespace boost {
969
489
 
970
490
  template <typename A0> struct use_piecewise
971
491
  {
972
- static choice1::type test(
973
- choice1, boost::unordered::piecewise_construct_t);
492
+ static choice1::type test(choice1, std::piecewise_construct_t);
974
493
 
975
494
  static choice2::type test(choice2, ...);
976
495
 
@@ -981,29 +500,24 @@ namespace boost {
981
500
  };
982
501
  };
983
502
 
984
- #if BOOST_UNORDERED_CXX11_CONSTRUCTION
985
-
986
503
  ////////////////////////////////////////////////////////////////////////
987
504
  // Construct from variadic parameters
988
505
 
989
506
  template <typename Alloc, typename T, typename... Args>
990
507
  inline void construct_from_args(
991
- Alloc& alloc, T* address, BOOST_FWD_REF(Args)... args)
508
+ Alloc& alloc, T* address, Args&&... args)
992
509
  {
993
510
  boost::allocator_construct(
994
- alloc, address, boost::forward<Args>(args)...);
511
+ alloc, address, std::forward<Args>(args)...);
995
512
  }
996
513
 
997
514
  // For backwards compatibility, implement a special case for
998
515
  // piecewise_construct with boost::tuple
999
516
 
1000
- template <typename A0> struct detect_boost_tuple
517
+ template <typename A0> struct detect_std_tuple
1001
518
  {
1002
- template <typename T0, typename T1, typename T2, typename T3,
1003
- typename T4, typename T5, typename T6, typename T7, typename T8,
1004
- typename T9>
1005
- static choice1::type test(choice1,
1006
- boost::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> const&);
519
+ template <class... Args>
520
+ static choice1::type test(choice1, std::tuple<Args...> const&);
1007
521
 
1008
522
  static choice2::type test(choice2, ...);
1009
523
 
@@ -1016,25 +530,27 @@ namespace boost {
1016
530
 
1017
531
  // Special case for piecewise_construct
1018
532
 
1019
- template <class... Args, std::size_t... Is, class... TupleArgs>
533
+ template <template <class...> class Tuple, class... Args,
534
+ std::size_t... Is, class... TupleArgs>
1020
535
  std::tuple<typename std::add_lvalue_reference<Args>::type...>
1021
536
  to_std_tuple_impl(boost::mp11::mp_list<Args...>,
1022
- boost::tuple<TupleArgs...>& tuple, boost::mp11::index_sequence<Is...>)
537
+ Tuple<TupleArgs...>& tuple, boost::mp11::index_sequence<Is...>)
1023
538
  {
1024
- (void) tuple;
539
+ (void)tuple;
540
+ using std::get;
1025
541
  return std::tuple<typename std::add_lvalue_reference<Args>::type...>(
1026
- boost::get<Is>(tuple)...);
542
+ get<Is>(tuple)...);
1027
543
  }
1028
544
 
1029
545
  template <class T>
1030
546
  using add_lvalue_reference_t =
1031
547
  typename std::add_lvalue_reference<T>::type;
1032
548
 
1033
- template <class... Args>
549
+ template <template <class...> class Tuple, class... Args>
1034
550
  boost::mp11::mp_transform<add_lvalue_reference_t,
1035
551
  boost::mp11::mp_remove<std::tuple<Args...>,
1036
552
  boost::tuples::null_type> >
1037
- to_std_tuple(boost::tuple<Args...>& tuple)
553
+ to_std_tuple(Tuple<Args...>& tuple)
1038
554
  {
1039
555
  using list = boost::mp11::mp_remove<boost::mp11::mp_list<Args...>,
1040
556
  boost::tuples::null_type>;
@@ -1046,138 +562,20 @@ namespace boost {
1046
562
 
1047
563
  template <typename Alloc, typename A, typename B, typename A0,
1048
564
  typename A1, typename A2>
1049
- inline typename boost::enable_if_c<use_piecewise<A0>::value &&
1050
- detect_boost_tuple<A1>::value &&
1051
- detect_boost_tuple<A2>::value,
565
+ inline typename std::enable_if<use_piecewise<A0>::value &&
566
+ !detect_std_tuple<A1>::value &&
567
+ !detect_std_tuple<A2>::value,
1052
568
  void>::type
1053
- construct_from_args(Alloc& alloc, std::pair<A, B>* address,
1054
- BOOST_FWD_REF(A0), BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
569
+ construct_from_args(
570
+ Alloc& alloc, std::pair<A, B>* address, A0&&, A1&& a1, A2&& a2)
1055
571
  {
1056
572
  boost::allocator_construct(alloc, address, std::piecewise_construct,
1057
573
  to_std_tuple(a1), to_std_tuple(a2));
1058
574
  }
1059
-
1060
- #elif !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
1061
-
1062
- ////////////////////////////////////////////////////////////////////////
1063
- // Construct from variadic parameters
1064
-
1065
- template <typename Alloc, typename T, typename... Args>
1066
- inline void construct_from_args(
1067
- Alloc&, T* address, BOOST_FWD_REF(Args)... args)
1068
- {
1069
- new ((void*)address) T(boost::forward<Args>(args)...);
1070
- }
1071
-
1072
- // Special case for piecewise_construct
1073
-
1074
- template <typename Alloc, typename A, typename B, typename A0,
1075
- typename A1, typename A2>
1076
- inline typename enable_if<use_piecewise<A0>, void>::type
1077
- construct_from_args(Alloc& alloc, std::pair<A, B>* address,
1078
- BOOST_FWD_REF(A0), BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
1079
- {
1080
- boost::unordered::detail::func::construct_from_tuple(
1081
- alloc, boost::addressof(address->first), boost::forward<A1>(a1));
1082
- BOOST_TRY
1083
- {
1084
- boost::unordered::detail::func::construct_from_tuple(
1085
- alloc, boost::addressof(address->second), boost::forward<A2>(a2));
1086
- }
1087
- BOOST_CATCH(...)
1088
- {
1089
- boost::unordered::detail::func::destroy(
1090
- boost::addressof(address->first));
1091
- BOOST_RETHROW
1092
- }
1093
- BOOST_CATCH_END
1094
- }
1095
-
1096
- #else // BOOST_NO_CXX11_VARIADIC_TEMPLATES
1097
-
1098
- ////////////////////////////////////////////////////////////////////////
1099
- // Construct from emplace_args
1100
-
1101
- // Explicitly write out first three overloads for the sake of sane
1102
- // error messages.
1103
-
1104
- template <typename Alloc, typename T, typename A0>
1105
- inline void construct_from_args(
1106
- Alloc&, T* address, emplace_args1<A0> const& args)
1107
- {
1108
- new ((void*)address) T(boost::forward<A0>(args.a0));
1109
- }
1110
-
1111
- template <typename Alloc, typename T, typename A0, typename A1>
1112
- inline void construct_from_args(
1113
- Alloc&, T* address, emplace_args2<A0, A1> const& args)
1114
- {
1115
- new ((void*)address)
1116
- T(boost::forward<A0>(args.a0), boost::forward<A1>(args.a1));
1117
- }
1118
-
1119
- template <typename Alloc, typename T, typename A0, typename A1,
1120
- typename A2>
1121
- inline void construct_from_args(
1122
- Alloc&, T* address, emplace_args3<A0, A1, A2> const& args)
1123
- {
1124
- new ((void*)address) T(boost::forward<A0>(args.a0),
1125
- boost::forward<A1>(args.a1), boost::forward<A2>(args.a2));
1126
- }
1127
-
1128
- // Use a macro for the rest.
1129
-
1130
- #define BOOST_UNORDERED_CONSTRUCT_IMPL(z, num_params, _) \
1131
- template <typename Alloc, typename T, \
1132
- BOOST_PP_ENUM_PARAMS_Z(z, num_params, typename A)> \
1133
- inline void construct_from_args(Alloc&, T* address, \
1134
- boost::unordered::detail::BOOST_PP_CAT(emplace_args, num_params) < \
1135
- BOOST_PP_ENUM_PARAMS_Z(z, num_params, A) > const& args) \
1136
- { \
1137
- new ((void*)address) \
1138
- T(BOOST_PP_ENUM_##z(num_params, BOOST_UNORDERED_CALL_FORWARD, args.a)); \
1139
- }
1140
-
1141
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 4, _)
1142
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 5, _)
1143
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 6, _)
1144
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 7, _)
1145
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 8, _)
1146
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 9, _)
1147
- BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
1148
- BOOST_UNORDERED_CONSTRUCT_IMPL, _)
1149
-
1150
- #undef BOOST_UNORDERED_CONSTRUCT_IMPL
1151
-
1152
- // Construct with piecewise_construct
1153
-
1154
- template <typename Alloc, typename A, typename B, typename A0,
1155
- typename A1, typename A2>
1156
- inline typename enable_if<use_piecewise<A0>, void>::type
1157
- construct_from_args(Alloc& alloc, std::pair<A, B>* address,
1158
- boost::unordered::detail::emplace_args3<A0, A1, A2> const& args)
1159
- {
1160
- boost::unordered::detail::func::construct_from_tuple(
1161
- alloc, boost::addressof(address->first), args.a1);
1162
- BOOST_TRY
1163
- {
1164
- boost::unordered::detail::func::construct_from_tuple(
1165
- alloc, boost::addressof(address->second), args.a2);
1166
- }
1167
- BOOST_CATCH(...)
1168
- {
1169
- boost::unordered::detail::func::destroy(
1170
- boost::addressof(address->first));
1171
- BOOST_RETHROW
1172
- }
1173
- BOOST_CATCH_END
1174
- }
1175
-
1176
- #endif // BOOST_NO_CXX11_VARIADIC_TEMPLATES
1177
- }
1178
- }
1179
- }
1180
- }
575
+ } // namespace func
576
+ } // namespace detail
577
+ } // namespace unordered
578
+ } // namespace boost
1181
579
 
1182
580
  namespace boost {
1183
581
  namespace unordered {
@@ -1266,9 +664,9 @@ namespace boost {
1266
664
  boost::allocator_deallocate(alloc_, node_, 1);
1267
665
  }
1268
666
  }
1269
- }
1270
- }
1271
- }
667
+ } // namespace detail
668
+ } // namespace unordered
669
+ } // namespace boost
1272
670
 
1273
671
  namespace boost {
1274
672
  namespace unordered {
@@ -1278,9 +676,9 @@ namespace boost {
1278
676
  // Some nicer construct_node functions, might try to
1279
677
  // improve implementation later.
1280
678
 
1281
- template <typename Alloc, BOOST_UNORDERED_EMPLACE_TEMPLATE>
679
+ template <typename Alloc, typename... Args>
1282
680
  inline typename boost::allocator_pointer<Alloc>::type
1283
- construct_node_from_args(Alloc& alloc, BOOST_UNORDERED_EMPLACE_ARGS)
681
+ construct_node_from_args(Alloc& alloc, Args&&... args)
1284
682
  {
1285
683
  typedef typename boost::allocator_value_type<Alloc>::type node;
1286
684
  typedef typename node::value_type value_type;
@@ -1292,13 +690,13 @@ namespace boost {
1292
690
  node_constructor<Alloc> a(alloc);
1293
691
  a.create_node();
1294
692
  construct_from_args(
1295
- val_alloc, a.node_->value_ptr(), BOOST_UNORDERED_EMPLACE_FORWARD);
693
+ val_alloc, a.node_->value_ptr(), std::forward<Args>(args)...);
1296
694
  return a.release();
1297
695
  }
1298
696
 
1299
697
  template <typename Alloc, typename U>
1300
698
  inline typename boost::allocator_pointer<Alloc>::type construct_node(
1301
- Alloc& alloc, BOOST_FWD_REF(U) x)
699
+ Alloc& alloc, U&& x)
1302
700
  {
1303
701
  node_constructor<Alloc> a(alloc);
1304
702
  a.create_node();
@@ -1311,15 +709,13 @@ namespace boost {
1311
709
  value_allocator val_alloc(alloc);
1312
710
 
1313
711
  boost::allocator_construct(
1314
- val_alloc, a.node_->value_ptr(), boost::forward<U>(x));
712
+ val_alloc, a.node_->value_ptr(), std::forward<U>(x));
1315
713
  return a.release();
1316
714
  }
1317
715
 
1318
- #if BOOST_UNORDERED_CXX11_CONSTRUCTION
1319
-
1320
716
  template <typename Alloc, typename Key>
1321
717
  inline typename boost::allocator_pointer<Alloc>::type
1322
- construct_node_pair(Alloc& alloc, BOOST_FWD_REF(Key) k)
718
+ construct_node_pair(Alloc& alloc, Key&& k)
1323
719
  {
1324
720
  node_constructor<Alloc> a(alloc);
1325
721
  a.create_node();
@@ -1331,17 +727,16 @@ namespace boost {
1331
727
 
1332
728
  value_allocator val_alloc(alloc);
1333
729
 
1334
- boost::allocator_construct(
1335
- val_alloc, a.node_->value_ptr(), std::piecewise_construct,
1336
- std::forward_as_tuple(boost::forward<Key>(k)),
730
+ boost::allocator_construct(val_alloc, a.node_->value_ptr(),
731
+ std::piecewise_construct,
732
+ std::forward_as_tuple(std::forward<Key>(k)),
1337
733
  std::forward_as_tuple());
1338
734
  return a.release();
1339
735
  }
1340
736
 
1341
737
  template <typename Alloc, typename Key, typename Mapped>
1342
738
  inline typename boost::allocator_pointer<Alloc>::type
1343
- construct_node_pair(
1344
- Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_FWD_REF(Mapped) m)
739
+ construct_node_pair(Alloc& alloc, Key&& k, Mapped&& m)
1345
740
  {
1346
741
  node_constructor<Alloc> a(alloc);
1347
742
  a.create_node();
@@ -1355,15 +750,14 @@ namespace boost {
1355
750
 
1356
751
  boost::allocator_construct(val_alloc, a.node_->value_ptr(),
1357
752
  std::piecewise_construct,
1358
- std::forward_as_tuple(boost::forward<Key>(k)),
1359
- std::forward_as_tuple(boost::forward<Mapped>(m)));
753
+ std::forward_as_tuple(std::forward<Key>(k)),
754
+ std::forward_as_tuple(std::forward<Mapped>(m)));
1360
755
  return a.release();
1361
756
  }
1362
757
 
1363
758
  template <typename Alloc, typename Key, typename... Args>
1364
759
  inline typename boost::allocator_pointer<Alloc>::type
1365
- construct_node_pair_from_args(
1366
- Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_FWD_REF(Args)... args)
760
+ construct_node_pair_from_args(Alloc& alloc, Key&& k, Args&&... args)
1367
761
  {
1368
762
  node_constructor<Alloc> a(alloc);
1369
763
  a.create_node();
@@ -1375,112 +769,31 @@ namespace boost {
1375
769
 
1376
770
  value_allocator val_alloc(alloc);
1377
771
 
1378
- #if !(BOOST_COMP_CLANG && BOOST_COMP_CLANG < BOOST_VERSION_NUMBER(3, 8, 0) && \
1379
- defined(BOOST_LIBSTDCXX11))
1380
- boost::allocator_construct(val_alloc, a.node_->value_ptr(),
1381
- std::piecewise_construct,
1382
- std::forward_as_tuple(boost::forward<Key>(k)),
1383
- std::forward_as_tuple(boost::forward<Args>(args)...));
1384
- #else
1385
- // It doesn't seem to be possible to construct a tuple with 3 variadic
1386
- // rvalue reference members when using older versions of clang with
1387
- // libstdc++, so just use std::make_tuple instead of
1388
- // std::forward_as_tuple.
1389
772
  boost::allocator_construct(val_alloc, a.node_->value_ptr(),
1390
773
  std::piecewise_construct,
1391
- std::forward_as_tuple(boost::forward<Key>(k)),
1392
- std::make_tuple(boost::forward<Args>(args)...));
1393
- #endif
1394
- return a.release();
1395
- }
774
+ std::forward_as_tuple(std::forward<Key>(k)),
775
+ std::forward_as_tuple(std::forward<Args>(args)...));
1396
776
 
1397
- #else
1398
-
1399
- template <typename Alloc, typename Key>
1400
- inline
1401
- typename boost::unordered::detail::allocator_traits<Alloc>::pointer
1402
- construct_node_pair(Alloc& alloc, BOOST_FWD_REF(Key) k)
1403
- {
1404
- node_constructor<Alloc> a(alloc);
1405
- a.create_node();
1406
- boost::unordered::detail::func::construct_value(
1407
- boost::addressof(a.node_->value_ptr()->first),
1408
- boost::forward<Key>(k));
1409
- BOOST_TRY
1410
- {
1411
- boost::unordered::detail::func::construct_value(
1412
- boost::addressof(a.node_->value_ptr()->second));
1413
- }
1414
- BOOST_CATCH(...)
1415
- {
1416
- boost::unordered::detail::func::destroy(
1417
- boost::addressof(a.node_->value_ptr()->first));
1418
- BOOST_RETHROW
1419
- }
1420
- BOOST_CATCH_END
1421
777
  return a.release();
1422
778
  }
1423
779
 
1424
- template <typename Alloc, typename Key, typename Mapped>
1425
- inline
1426
- typename boost::unordered::detail::allocator_traits<Alloc>::pointer
1427
- construct_node_pair(
1428
- Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_FWD_REF(Mapped) m)
780
+ template <typename T, typename Alloc, typename Key>
781
+ inline typename boost::allocator_pointer<Alloc>::type
782
+ construct_node_from_key(T*, Alloc& alloc, Key&& k)
1429
783
  {
1430
- node_constructor<Alloc> a(alloc);
1431
- a.create_node();
1432
- boost::unordered::detail::func::construct_value(
1433
- boost::addressof(a.node_->value_ptr()->first),
1434
- boost::forward<Key>(k));
1435
- BOOST_TRY
1436
- {
1437
- boost::unordered::detail::func::construct_value(
1438
- boost::addressof(a.node_->value_ptr()->second),
1439
- boost::forward<Mapped>(m));
1440
- }
1441
- BOOST_CATCH(...)
1442
- {
1443
- boost::unordered::detail::func::destroy(
1444
- boost::addressof(a.node_->value_ptr()->first));
1445
- BOOST_RETHROW
1446
- }
1447
- BOOST_CATCH_END
1448
- return a.release();
784
+ return construct_node(alloc, std::forward<Key>(k));
1449
785
  }
1450
786
 
1451
- template <typename Alloc, typename Key,
1452
- BOOST_UNORDERED_EMPLACE_TEMPLATE>
1453
- inline
1454
- typename boost::unordered::detail::allocator_traits<Alloc>::pointer
1455
- construct_node_pair_from_args(
1456
- Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_UNORDERED_EMPLACE_ARGS)
787
+ template <typename T, typename V, typename Alloc, typename Key>
788
+ inline typename boost::allocator_pointer<Alloc>::type
789
+ construct_node_from_key(std::pair<T const, V>*, Alloc& alloc, Key&& k)
1457
790
  {
1458
- node_constructor<Alloc> a(alloc);
1459
- a.create_node();
1460
- boost::unordered::detail::func::construct_value(
1461
- boost::addressof(a.node_->value_ptr()->first),
1462
- boost::forward<Key>(k));
1463
- BOOST_TRY
1464
- {
1465
- boost::unordered::detail::func::construct_from_args(alloc,
1466
- boost::addressof(a.node_->value_ptr()->second),
1467
- BOOST_UNORDERED_EMPLACE_FORWARD);
1468
- }
1469
- BOOST_CATCH(...)
1470
- {
1471
- boost::unordered::detail::func::destroy(
1472
- boost::addressof(a.node_->value_ptr()->first));
1473
- BOOST_RETHROW
1474
- }
1475
- BOOST_CATCH_END
1476
- return a.release();
791
+ return construct_node_pair(alloc, std::forward<Key>(k));
1477
792
  }
1478
-
1479
- #endif
1480
- }
1481
- }
1482
- }
1483
- }
793
+ } // namespace func
794
+ } // namespace detail
795
+ } // namespace unordered
796
+ } // namespace boost
1484
797
 
1485
798
  #if defined(BOOST_MSVC)
1486
799
  #pragma warning(pop)
@@ -1506,38 +819,35 @@ namespace boost {
1506
819
  // in that region of storage. This warning is also generated in C++03
1507
820
  // which does not have `std::launder`. The compiler builtin is always
1508
821
  // available, regardless of the C++ standard used when compiling.
1509
- template <class T> T* launder(T* p) BOOST_NOEXCEPT
822
+ template <class T> T* launder(T* p) noexcept
1510
823
  {
1511
824
  return __builtin_launder(p);
1512
825
  }
1513
826
  #else
1514
- template <class T> T* launder(T* p) BOOST_NOEXCEPT { return p; }
827
+ template <class T> T* launder(T* p) noexcept { return p; }
1515
828
  #endif
1516
829
 
1517
830
  template <class H, class P> class functions
1518
831
  {
1519
832
  public:
1520
833
  static const bool nothrow_move_assignable =
1521
- boost::is_nothrow_move_assignable<H>::value &&
1522
- boost::is_nothrow_move_assignable<P>::value;
834
+ std::is_nothrow_move_assignable<H>::value &&
835
+ std::is_nothrow_move_assignable<P>::value;
1523
836
  static const bool nothrow_move_constructible =
1524
- boost::is_nothrow_move_constructible<H>::value &&
1525
- boost::is_nothrow_move_constructible<P>::value;
837
+ std::is_nothrow_move_constructible<H>::value &&
838
+ std::is_nothrow_move_constructible<P>::value;
1526
839
  static const bool nothrow_swappable =
1527
- boost::is_nothrow_swappable<H>::value &&
1528
- boost::is_nothrow_swappable<P>::value;
840
+ boost::unordered::detail::is_nothrow_swappable<H>::value &&
841
+ boost::unordered::detail::is_nothrow_swappable<P>::value;
1529
842
 
1530
843
  private:
1531
844
  functions& operator=(functions const&);
1532
845
 
1533
846
  typedef compressed<H, P> function_pair;
1534
847
 
1535
- typedef typename boost::aligned_storage<sizeof(function_pair),
1536
- boost::alignment_of<function_pair>::value>::type aligned_function;
1537
-
1538
848
  unsigned char current_; // 0/1 - Currently active functions
1539
849
  // +2 - Both constructed
1540
- aligned_function funcs_[2];
850
+ opt_storage<function_pair> funcs_[2];
1541
851
 
1542
852
  public:
1543
853
  functions(H const& hf, P const& eq) : current_(0)
@@ -1554,8 +864,7 @@ namespace boost {
1554
864
  : current_(0)
1555
865
  {
1556
866
  construct_functions(current_, bf.current_functions(),
1557
- boost::unordered::detail::integral_constant<bool,
1558
- nothrow_move_constructible>());
867
+ std::integral_constant<bool, nothrow_move_constructible>());
1559
868
  }
1560
869
 
1561
870
  ~functions()
@@ -1611,16 +920,15 @@ namespace boost {
1611
920
  new ((void*)&funcs_[which]) function_pair(hf, eq);
1612
921
  }
1613
922
 
1614
- void construct_functions(unsigned char which, function_pair const& f,
1615
- boost::unordered::detail::false_type =
1616
- boost::unordered::detail::false_type())
923
+ void construct_functions(
924
+ unsigned char which, function_pair const& f, std::false_type = {})
1617
925
  {
1618
926
  BOOST_ASSERT(!(which & 2));
1619
927
  new ((void*)&funcs_[which]) function_pair(f);
1620
928
  }
1621
929
 
1622
- void construct_functions(unsigned char which, function_pair& f,
1623
- boost::unordered::detail::true_type)
930
+ void construct_functions(
931
+ unsigned char which, function_pair& f, std::true_type)
1624
932
  {
1625
933
  BOOST_ASSERT(!(which & 2));
1626
934
  new ((void*)&funcs_[which])
@@ -1635,34 +943,6 @@ namespace boost {
1635
943
  }
1636
944
  };
1637
945
 
1638
- ////////////////////////////////////////////////////////////////////////////
1639
- // rvalue parameters when type can't be a BOOST_RV_REF(T) parameter
1640
- // e.g. for int
1641
-
1642
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
1643
- #define BOOST_UNORDERED_RV_REF(T) BOOST_RV_REF(T)
1644
- #else
1645
- struct please_ignore_this_overload
1646
- {
1647
- typedef please_ignore_this_overload type;
1648
- };
1649
-
1650
- template <typename T> struct rv_ref_impl
1651
- {
1652
- typedef BOOST_RV_REF(T) type;
1653
- };
1654
-
1655
- template <typename T>
1656
- struct rv_ref : boost::conditional<boost::is_class<T>::value,
1657
- boost::unordered::detail::rv_ref_impl<T>,
1658
- please_ignore_this_overload>::type
1659
- {
1660
- };
1661
-
1662
- #define BOOST_UNORDERED_RV_REF(T) \
1663
- typename boost::unordered::detail::rv_ref<T>::type
1664
- #endif
1665
-
1666
946
  #if defined(BOOST_MSVC)
1667
947
  #pragma warning(push)
1668
948
  #pragma warning(disable : 4127) // conditional expression is constant
@@ -1695,48 +975,48 @@ namespace boost {
1695
975
  typedef std::ptrdiff_t difference_type;
1696
976
  typedef std::forward_iterator_tag iterator_category;
1697
977
 
1698
- iterator() : p(), itb(){};
978
+ iterator() : p(), itb() {}
1699
979
 
1700
- reference operator*() const BOOST_NOEXCEPT { return dereference(); }
1701
- pointer operator->() const BOOST_NOEXCEPT
980
+ reference operator*() const noexcept { return dereference(); }
981
+ pointer operator->() const noexcept
1702
982
  {
1703
- pointer x = boost::addressof(p->value());
983
+ pointer x = std::addressof(p->value());
1704
984
  return x;
1705
985
  }
1706
986
 
1707
- iterator& operator++() BOOST_NOEXCEPT
987
+ iterator& operator++() noexcept
1708
988
  {
1709
989
  increment();
1710
990
  return *this;
1711
991
  }
1712
992
 
1713
- iterator operator++(int) BOOST_NOEXCEPT
993
+ iterator operator++(int) noexcept
1714
994
  {
1715
995
  iterator old = *this;
1716
996
  increment();
1717
997
  return old;
1718
998
  }
1719
999
 
1720
- bool operator==(iterator const& other) const BOOST_NOEXCEPT
1000
+ bool operator==(iterator const& other) const noexcept
1721
1001
  {
1722
1002
  return equal(other);
1723
1003
  }
1724
1004
 
1725
- bool operator!=(iterator const& other) const BOOST_NOEXCEPT
1005
+ bool operator!=(iterator const& other) const noexcept
1726
1006
  {
1727
1007
  return !equal(other);
1728
1008
  }
1729
1009
 
1730
1010
  bool operator==(
1731
1011
  boost::unordered::detail::iterator_detail::c_iterator<Node,
1732
- Bucket> const& other) const BOOST_NOEXCEPT
1012
+ Bucket> const& other) const noexcept
1733
1013
  {
1734
1014
  return equal(other);
1735
1015
  }
1736
1016
 
1737
1017
  bool operator!=(
1738
1018
  boost::unordered::detail::iterator_detail::c_iterator<Node,
1739
- Bucket> const& other) const BOOST_NOEXCEPT
1019
+ Bucket> const& other) const noexcept
1740
1020
  {
1741
1021
  return !equal(other);
1742
1022
  }
@@ -1753,27 +1033,43 @@ namespace boost {
1753
1033
 
1754
1034
  iterator(node_pointer p_, bucket_iterator itb_) : p(p_), itb(itb_) {}
1755
1035
 
1756
- value_type& dereference() const BOOST_NOEXCEPT { return p->value(); }
1036
+ value_type& dereference() const noexcept { return p->value(); }
1757
1037
 
1758
- bool equal(const iterator& x) const BOOST_NOEXCEPT
1759
- {
1760
- return (p == x.p);
1761
- }
1038
+ bool equal(const iterator& x) const noexcept { return (p == x.p); }
1762
1039
 
1763
1040
  bool equal(
1764
1041
  const boost::unordered::detail::iterator_detail::c_iterator<Node,
1765
- Bucket>& x) const BOOST_NOEXCEPT
1042
+ Bucket>& x) const noexcept
1766
1043
  {
1767
1044
  return (p == x.p);
1768
1045
  }
1769
1046
 
1770
- void increment() BOOST_NOEXCEPT
1047
+ void increment() noexcept
1771
1048
  {
1772
1049
  p = p->next;
1773
1050
  if (!p) {
1774
1051
  p = (++itb)->next;
1775
1052
  }
1776
1053
  }
1054
+
1055
+ template <typename Archive>
1056
+ friend void serialization_track(Archive& ar, const iterator& x)
1057
+ {
1058
+ if (x.p) {
1059
+ track_address(ar, x.p);
1060
+ serialization_track(ar, x.itb);
1061
+ }
1062
+ }
1063
+
1064
+ friend class boost::serialization::access;
1065
+
1066
+ template <typename Archive> void serialize(Archive& ar, unsigned int)
1067
+ {
1068
+ if (!p)
1069
+ itb = bucket_iterator();
1070
+ serialize_tracked_address(ar, p);
1071
+ ar& core::make_nvp("bucket_iterator", itb);
1072
+ }
1777
1073
  };
1778
1074
 
1779
1075
  template <class Node, class Bucket> class c_iterator
@@ -1786,49 +1082,49 @@ namespace boost {
1786
1082
  typedef std::ptrdiff_t difference_type;
1787
1083
  typedef std::forward_iterator_tag iterator_category;
1788
1084
 
1789
- c_iterator() : p(), itb(){};
1085
+ c_iterator() : p(), itb() {}
1790
1086
  c_iterator(iterator<Node, Bucket> it) : p(it.p), itb(it.itb) {}
1791
1087
 
1792
- reference operator*() const BOOST_NOEXCEPT { return dereference(); }
1793
- pointer operator->() const BOOST_NOEXCEPT
1088
+ reference operator*() const noexcept { return dereference(); }
1089
+ pointer operator->() const noexcept
1794
1090
  {
1795
- pointer x = boost::addressof(p->value());
1091
+ pointer x = std::addressof(p->value());
1796
1092
  return x;
1797
1093
  }
1798
1094
 
1799
- c_iterator& operator++() BOOST_NOEXCEPT
1095
+ c_iterator& operator++() noexcept
1800
1096
  {
1801
1097
  increment();
1802
1098
  return *this;
1803
1099
  }
1804
1100
 
1805
- c_iterator operator++(int) BOOST_NOEXCEPT
1101
+ c_iterator operator++(int) noexcept
1806
1102
  {
1807
1103
  c_iterator old = *this;
1808
1104
  increment();
1809
1105
  return old;
1810
1106
  }
1811
1107
 
1812
- bool operator==(c_iterator const& other) const BOOST_NOEXCEPT
1108
+ bool operator==(c_iterator const& other) const noexcept
1813
1109
  {
1814
1110
  return equal(other);
1815
1111
  }
1816
1112
 
1817
- bool operator!=(c_iterator const& other) const BOOST_NOEXCEPT
1113
+ bool operator!=(c_iterator const& other) const noexcept
1818
1114
  {
1819
1115
  return !equal(other);
1820
1116
  }
1821
1117
 
1822
1118
  bool operator==(
1823
1119
  boost::unordered::detail::iterator_detail::iterator<Node,
1824
- Bucket> const& other) const BOOST_NOEXCEPT
1120
+ Bucket> const& other) const noexcept
1825
1121
  {
1826
1122
  return equal(other);
1827
1123
  }
1828
1124
 
1829
1125
  bool operator!=(
1830
1126
  boost::unordered::detail::iterator_detail::iterator<Node,
1831
- Bucket> const& other) const BOOST_NOEXCEPT
1127
+ Bucket> const& other) const noexcept
1832
1128
  {
1833
1129
  return !equal(other);
1834
1130
  }
@@ -1847,23 +1143,36 @@ namespace boost {
1847
1143
  {
1848
1144
  }
1849
1145
 
1850
- value_type const& dereference() const BOOST_NOEXCEPT
1851
- {
1852
- return p->value();
1853
- }
1146
+ value_type const& dereference() const noexcept { return p->value(); }
1854
1147
 
1855
- bool equal(const c_iterator& x) const BOOST_NOEXCEPT
1856
- {
1857
- return (p == x.p);
1858
- }
1148
+ bool equal(const c_iterator& x) const noexcept { return (p == x.p); }
1859
1149
 
1860
- void increment() BOOST_NOEXCEPT
1150
+ void increment() noexcept
1861
1151
  {
1862
1152
  p = p->next;
1863
1153
  if (!p) {
1864
1154
  p = (++itb)->next;
1865
1155
  }
1866
1156
  }
1157
+
1158
+ template <typename Archive>
1159
+ friend void serialization_track(Archive& ar, const c_iterator& x)
1160
+ {
1161
+ if (x.p) {
1162
+ track_address(ar, x.p);
1163
+ serialization_track(ar, x.itb);
1164
+ }
1165
+ }
1166
+
1167
+ friend class boost::serialization::access;
1168
+
1169
+ template <typename Archive> void serialize(Archive& ar, unsigned int)
1170
+ {
1171
+ if (!p)
1172
+ itb = bucket_iterator();
1173
+ serialize_tracked_address(ar, p);
1174
+ ar& core::make_nvp("bucket_iterator", itb);
1175
+ }
1867
1176
  };
1868
1177
  } // namespace iterator_detail
1869
1178
 
@@ -1890,20 +1199,23 @@ namespace boost {
1890
1199
  functions;
1891
1200
 
1892
1201
  typedef typename Types::value_allocator value_allocator;
1893
- typedef typename boost::allocator_void_pointer<value_allocator>::type void_pointer;
1202
+ typedef typename boost::allocator_void_pointer<value_allocator>::type
1203
+ void_pointer;
1894
1204
  typedef node<value_type, void_pointer> node_type;
1895
1205
 
1896
1206
  typedef boost::unordered::detail::grouped_bucket_array<
1897
1207
  bucket<node_type, void_pointer>, value_allocator, prime_fmod_size<> >
1898
1208
  bucket_array_type;
1899
1209
 
1900
- typedef typename bucket_array_type::node_allocator_type
1901
- node_allocator_type;
1902
- typedef typename boost::allocator_pointer<node_allocator_type>::type node_pointer;
1210
+ typedef
1211
+ typename bucket_array_type::node_allocator_type node_allocator_type;
1212
+ typedef typename boost::allocator_pointer<node_allocator_type>::type
1213
+ node_pointer;
1903
1214
 
1904
1215
  typedef boost::unordered::detail::node_constructor<node_allocator_type>
1905
1216
  node_constructor;
1906
- typedef boost::unordered::detail::node_tmp<node_allocator_type> node_tmp;
1217
+ typedef boost::unordered::detail::node_tmp<node_allocator_type>
1218
+ node_tmp;
1907
1219
 
1908
1220
  typedef typename bucket_array_type::bucket_type bucket_type;
1909
1221
 
@@ -1950,8 +1262,7 @@ namespace boost {
1950
1262
  }
1951
1263
  std::size_t c = 0;
1952
1264
  std::size_t const key_hash = this->hash(k);
1953
- bucket_iterator itb =
1954
- buckets_.at(buckets_.position(key_hash));
1265
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
1955
1266
 
1956
1267
  bool found = false;
1957
1268
 
@@ -1993,10 +1304,7 @@ namespace boost {
1993
1304
  return iterator(itb->next, itb);
1994
1305
  }
1995
1306
 
1996
- iterator end() const
1997
- {
1998
- return iterator();
1999
- }
1307
+ iterator end() const { return iterator(); }
2000
1308
 
2001
1309
  l_iterator begin(std::size_t bucket_index) const
2002
1310
  {
@@ -2058,14 +1366,14 @@ namespace boost {
2058
1366
  }
2059
1367
 
2060
1368
  table(std::size_t num_buckets, hasher const& hf, key_equal const& eq,
2061
- node_allocator_type const& a)
1369
+ value_allocator const& a)
2062
1370
  : functions(hf, eq), size_(0), mlf_(1.0f), max_load_(0),
2063
1371
  buckets_(num_buckets, a)
2064
1372
  {
2065
1373
  recalculate_max_load();
2066
1374
  }
2067
1375
 
2068
- table(table const& x, node_allocator_type const& a)
1376
+ table(table const& x, value_allocator const& a)
2069
1377
  : functions(x), size_(0), mlf_(x.mlf_), max_load_(0),
2070
1378
  buckets_(x.size_, a)
2071
1379
  {
@@ -2074,13 +1382,13 @@ namespace boost {
2074
1382
 
2075
1383
  table(table& x, boost::unordered::detail::move_tag m)
2076
1384
  : functions(x, m), size_(x.size_), mlf_(x.mlf_),
2077
- max_load_(x.max_load_), buckets_(boost::move(x.buckets_))
1385
+ max_load_(x.max_load_), buckets_(std::move(x.buckets_))
2078
1386
  {
2079
1387
  x.size_ = 0;
2080
1388
  x.max_load_ = 0;
2081
1389
  }
2082
1390
 
2083
- table(table& x, node_allocator_type const& a,
1391
+ table(table& x, value_allocator const& a,
2084
1392
  boost::unordered::detail::move_tag m)
2085
1393
  : functions(x, m), size_(0), mlf_(x.mlf_), max_load_(0),
2086
1394
  buckets_(x.bucket_count(), a)
@@ -2091,7 +1399,7 @@ namespace boost {
2091
1399
  ////////////////////////////////////////////////////////////////////////
2092
1400
  // Swap and Move
2093
1401
 
2094
- void swap_allocators(table& other, false_type)
1402
+ void swap_allocators(table& other, std::false_type)
2095
1403
  {
2096
1404
  boost::unordered::detail::func::ignore_unused_variable_warning(other);
2097
1405
 
@@ -2102,7 +1410,7 @@ namespace boost {
2102
1410
  }
2103
1411
 
2104
1412
  // Not nothrow swappable
2105
- void swap(table& x, false_type)
1413
+ void swap(table& x, std::false_type)
2106
1414
  {
2107
1415
  if (this == &x) {
2108
1416
  return;
@@ -2120,16 +1428,16 @@ namespace boost {
2120
1428
  x.switch_functions();
2121
1429
 
2122
1430
  buckets_.swap(x.buckets_);
2123
- boost::swap(size_, x.size_);
1431
+ boost::core::invoke_swap(size_, x.size_);
2124
1432
  std::swap(mlf_, x.mlf_);
2125
1433
  std::swap(max_load_, x.max_load_);
2126
1434
  }
2127
1435
 
2128
1436
  // Nothrow swappable
2129
- void swap(table& x, true_type)
1437
+ void swap(table& x, std::true_type)
2130
1438
  {
2131
1439
  buckets_.swap(x.buckets_);
2132
- boost::swap(size_, x.size_);
1440
+ boost::core::invoke_swap(size_, x.size_);
2133
1441
  std::swap(mlf_, x.mlf_);
2134
1442
  std::swap(max_load_, x.max_load_);
2135
1443
  this->current_functions().swap(x.current_functions());
@@ -2143,8 +1451,7 @@ namespace boost {
2143
1451
  BOOST_ASSERT(boost::allocator_propagate_on_container_swap<
2144
1452
  node_allocator_type>::type::value ||
2145
1453
  node_alloc() == x.node_alloc());
2146
- swap(x, boost::unordered::detail::integral_constant<bool,
2147
- functions::nothrow_swappable>());
1454
+ swap(x, std::integral_constant<bool, functions::nothrow_swappable>());
2148
1455
  }
2149
1456
 
2150
1457
  // Only call with nodes allocated with the currect allocator, or
@@ -2152,7 +1459,7 @@ namespace boost {
2152
1459
  // allocators might have already been moved).
2153
1460
  void move_buckets_from(table& other)
2154
1461
  {
2155
- buckets_ = boost::move(other.buckets_);
1462
+ buckets_ = std::move(other.buckets_);
2156
1463
 
2157
1464
  size_ = other.size_;
2158
1465
  max_load_ = other.max_load_;
@@ -2173,20 +1480,18 @@ namespace boost {
2173
1480
  return;
2174
1481
  }
2175
1482
 
2176
- BOOST_ASSERT(
2177
- buckets_.bucket_count() == src.buckets_.bucket_count());
1483
+ BOOST_ASSERT(buckets_.bucket_count() == src.buckets_.bucket_count());
2178
1484
 
2179
1485
  this->reserve(src.size_);
2180
1486
  for (iterator pos = src.begin(); pos != src.end(); ++pos) {
2181
1487
  node_tmp b(detail::func::construct_node(
2182
- this->node_alloc(), boost::move(pos.p->value())),
1488
+ this->node_alloc(), std::move(pos.p->value())),
2183
1489
  this->node_alloc());
2184
1490
 
2185
1491
  const_key_type& k = this->get_key(b.node_);
2186
1492
  std::size_t key_hash = this->hash(k);
2187
1493
 
2188
- bucket_iterator itb =
2189
- buckets_.at(buckets_.position(key_hash));
1494
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2190
1495
  buckets_.insert_node(itb, b.release());
2191
1496
  ++size_;
2192
1497
  }
@@ -2203,6 +1508,7 @@ namespace boost {
2203
1508
 
2204
1509
  value_allocator val_alloc(alloc);
2205
1510
  boost::allocator_destroy(val_alloc, p->value_ptr());
1511
+ boost::unordered::detail::func::destroy(boost::to_address(p));
2206
1512
  boost::allocator_deallocate(alloc, p, 1);
2207
1513
  }
2208
1514
 
@@ -2232,17 +1538,17 @@ namespace boost {
2232
1538
  template <typename UniqueType>
2233
1539
  void assign(table const& x, UniqueType is_unique)
2234
1540
  {
2235
- typedef typename boost::allocator_propagate_on_container_copy_assignment<node_allocator_type>::type pocca;
1541
+ typedef
1542
+ typename boost::allocator_propagate_on_container_copy_assignment<
1543
+ node_allocator_type>::type pocca;
2236
1544
 
2237
1545
  if (this != &x) {
2238
- assign(x, is_unique,
2239
- boost::unordered::detail::integral_constant<bool,
2240
- pocca::value>());
1546
+ assign(x, is_unique, std::integral_constant<bool, pocca::value>());
2241
1547
  }
2242
1548
  }
2243
1549
 
2244
1550
  template <typename UniqueType>
2245
- void assign(table const &x, UniqueType is_unique, false_type)
1551
+ void assign(table const& x, UniqueType is_unique, std::false_type)
2246
1552
  {
2247
1553
  // Strong exception safety.
2248
1554
  this->construct_spare_functions(x.current_functions());
@@ -2265,15 +1571,12 @@ namespace boost {
2265
1571
  }
2266
1572
 
2267
1573
  template <typename UniqueType>
2268
- void assign(table const &x, UniqueType is_unique, true_type)
1574
+ void assign(table const& x, UniqueType is_unique, std::true_type)
2269
1575
  {
2270
- if (node_alloc() == x.node_alloc())
2271
- {
1576
+ if (node_alloc() == x.node_alloc()) {
2272
1577
  buckets_.reset_allocator(x.node_alloc());
2273
- assign(x, is_unique, false_type());
2274
- }
2275
- else
2276
- {
1578
+ assign(x, is_unique, std::false_type());
1579
+ } else {
2277
1580
  bucket_array_type new_buckets(x.size_, x.node_alloc());
2278
1581
  this->construct_spare_functions(x.current_functions());
2279
1582
  this->switch_functions();
@@ -2282,15 +1585,14 @@ namespace boost {
2282
1585
  // the new ones.
2283
1586
  delete_buckets();
2284
1587
  buckets_.reset_allocator(x.node_alloc());
2285
- buckets_ = boost::move(new_buckets);
1588
+ buckets_ = std::move(new_buckets);
2286
1589
 
2287
1590
  // Copy over other data, all no throw.
2288
1591
  mlf_ = x.mlf_;
2289
1592
  reserve(x.size_);
2290
1593
 
2291
1594
  // Finally copy the elements.
2292
- if (x.size_)
2293
- {
1595
+ if (x.size_) {
2294
1596
  copy_buckets(x, is_unique);
2295
1597
  }
2296
1598
  }
@@ -2301,7 +1603,7 @@ namespace boost {
2301
1603
  {
2302
1604
  if (this != &x) {
2303
1605
  move_assign(x, is_unique,
2304
- boost::unordered::detail::integral_constant<bool,
1606
+ std::integral_constant<bool,
2305
1607
  boost::allocator_propagate_on_container_move_assignment<
2306
1608
  node_allocator_type>::type::value>());
2307
1609
  }
@@ -2309,7 +1611,7 @@ namespace boost {
2309
1611
 
2310
1612
  // Propagate allocator
2311
1613
  template <typename UniqueType>
2312
- void move_assign(table& x, UniqueType, true_type)
1614
+ void move_assign(table& x, UniqueType, std::true_type)
2313
1615
  {
2314
1616
  if (!functions::nothrow_move_assignable) {
2315
1617
  this->construct_spare_functions(x.current_functions());
@@ -2326,7 +1628,7 @@ namespace boost {
2326
1628
 
2327
1629
  // Don't propagate allocator
2328
1630
  template <typename UniqueType>
2329
- void move_assign(table& x, UniqueType is_unique, false_type)
1631
+ void move_assign(table& x, UniqueType is_unique, std::false_type)
2330
1632
  {
2331
1633
  if (node_alloc() == x.node_alloc()) {
2332
1634
  move_assign_equal_alloc(x);
@@ -2378,8 +1680,7 @@ namespace boost {
2378
1680
  return extractor::extract(n->value());
2379
1681
  }
2380
1682
 
2381
- template <class Key>
2382
- std::size_t hash(Key const& k) const
1683
+ template <class Key> std::size_t hash(Key const& k) const
2383
1684
  {
2384
1685
  return this->hash_function()(k);
2385
1686
  }
@@ -2387,8 +1688,7 @@ namespace boost {
2387
1688
  // Find Node
2388
1689
 
2389
1690
  template <class Key>
2390
- node_pointer find_node_impl(
2391
- Key const& x, bucket_iterator itb) const
1691
+ node_pointer find_node_impl(Key const& x, bucket_iterator itb) const
2392
1692
  {
2393
1693
  node_pointer p = node_pointer();
2394
1694
  if (itb != buckets_.end()) {
@@ -2406,12 +1706,10 @@ namespace boost {
2406
1706
  template <class Key> node_pointer find_node(Key const& k) const
2407
1707
  {
2408
1708
  std::size_t const key_hash = this->hash(k);
2409
- return find_node_impl(
2410
- k, buckets_.at(buckets_.position(key_hash)));
1709
+ return find_node_impl(k, buckets_.at(buckets_.position(key_hash)));
2411
1710
  }
2412
1711
 
2413
- node_pointer find_node(
2414
- const_key_type& k, bucket_iterator itb) const
1712
+ node_pointer find_node(const_key_type& k, bucket_iterator itb) const
2415
1713
  {
2416
1714
  return find_node_impl(k, itb);
2417
1715
  }
@@ -2444,8 +1742,8 @@ namespace boost {
2444
1742
  {
2445
1743
  if (size_ > 0) {
2446
1744
  key_equal pred = this->key_eq();
2447
- for (node_pointer* pp = boost::addressof(itb->next); *pp;
2448
- pp = boost::addressof((*pp)->next)) {
1745
+ for (node_pointer* pp = std::addressof(itb->next); *pp;
1746
+ pp = std::addressof((*pp)->next)) {
2449
1747
  if (pred(key, extractor::extract((*pp)->value()))) {
2450
1748
  return pp;
2451
1749
  }
@@ -2523,31 +1821,29 @@ namespace boost {
2523
1821
 
2524
1822
  // Emplace/Insert
2525
1823
 
2526
- template <BOOST_UNORDERED_EMPLACE_TEMPLATE>
1824
+ template <typename... Args>
2527
1825
  iterator emplace_hint_unique(
2528
- c_iterator hint, const_key_type& k, BOOST_UNORDERED_EMPLACE_ARGS)
1826
+ c_iterator hint, const_key_type& k, Args&&... args)
2529
1827
  {
2530
1828
  if (hint.p && this->key_eq()(k, this->get_key(hint.p))) {
2531
1829
  return iterator(hint.p, hint.itb);
2532
1830
  } else {
2533
- return emplace_unique(k, BOOST_UNORDERED_EMPLACE_FORWARD).first;
1831
+ return emplace_unique(k, std::forward<Args>(args)...).first;
2534
1832
  }
2535
1833
  }
2536
1834
 
2537
- template <BOOST_UNORDERED_EMPLACE_TEMPLATE>
2538
- emplace_return emplace_unique(
2539
- const_key_type& k, BOOST_UNORDERED_EMPLACE_ARGS)
1835
+ template <typename... Args>
1836
+ emplace_return emplace_unique(const_key_type& k, Args&&... args)
2540
1837
  {
2541
1838
  std::size_t key_hash = this->hash(k);
2542
- bucket_iterator itb =
2543
- buckets_.at(buckets_.position(key_hash));
1839
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2544
1840
  node_pointer pos = this->find_node_impl(k, itb);
2545
1841
 
2546
1842
  if (pos) {
2547
1843
  return emplace_return(iterator(pos, itb), false);
2548
1844
  } else {
2549
1845
  node_tmp b(boost::unordered::detail::func::construct_node_from_args(
2550
- this->node_alloc(), BOOST_UNORDERED_EMPLACE_FORWARD),
1846
+ this->node_alloc(), std::forward<Args>(args)...),
2551
1847
  this->node_alloc());
2552
1848
 
2553
1849
  if (size_ + 1 > max_load_) {
@@ -2563,12 +1859,11 @@ namespace boost {
2563
1859
  }
2564
1860
  }
2565
1861
 
2566
- template <BOOST_UNORDERED_EMPLACE_TEMPLATE>
2567
- iterator emplace_hint_unique(
2568
- c_iterator hint, no_key, BOOST_UNORDERED_EMPLACE_ARGS)
1862
+ template <typename... Args>
1863
+ iterator emplace_hint_unique(c_iterator hint, no_key, Args&&... args)
2569
1864
  {
2570
1865
  node_tmp b(boost::unordered::detail::func::construct_node_from_args(
2571
- this->node_alloc(), BOOST_UNORDERED_EMPLACE_FORWARD),
1866
+ this->node_alloc(), std::forward<Args>(args)...),
2572
1867
  this->node_alloc());
2573
1868
 
2574
1869
  const_key_type& k = this->get_key(b.node_);
@@ -2577,8 +1872,7 @@ namespace boost {
2577
1872
  }
2578
1873
 
2579
1874
  std::size_t const key_hash = this->hash(k);
2580
- bucket_iterator itb =
2581
- buckets_.at(buckets_.position(key_hash));
1875
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2582
1876
 
2583
1877
  node_pointer p = this->find_node_impl(k, itb);
2584
1878
  if (p) {
@@ -2596,18 +1890,17 @@ namespace boost {
2596
1890
  return iterator(p, itb);
2597
1891
  }
2598
1892
 
2599
- template <BOOST_UNORDERED_EMPLACE_TEMPLATE>
2600
- emplace_return emplace_unique(no_key, BOOST_UNORDERED_EMPLACE_ARGS)
1893
+ template <typename... Args>
1894
+ emplace_return emplace_unique(no_key, Args&&... args)
2601
1895
  {
2602
1896
  node_tmp b(boost::unordered::detail::func::construct_node_from_args(
2603
- this->node_alloc(), BOOST_UNORDERED_EMPLACE_FORWARD),
1897
+ this->node_alloc(), std::forward<Args>(args)...),
2604
1898
  this->node_alloc());
2605
1899
 
2606
1900
  const_key_type& k = this->get_key(b.node_);
2607
1901
  std::size_t key_hash = this->hash(k);
2608
1902
 
2609
- bucket_iterator itb =
2610
- buckets_.at(buckets_.position(key_hash));
1903
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2611
1904
  node_pointer pos = this->find_node_impl(k, itb);
2612
1905
 
2613
1906
  if (pos) {
@@ -2626,12 +1919,20 @@ namespace boost {
2626
1919
  }
2627
1920
  }
2628
1921
 
2629
- template <typename Key>
2630
- emplace_return try_emplace_unique(BOOST_FWD_REF(Key) k)
1922
+ template <typename K, typename V>
1923
+ emplace_return emplace_unique(converting_key, K&& k, V&& v)
1924
+ {
1925
+ using alloc_cted = allocator_constructed<node_allocator_type,
1926
+ typename Types::key_type>;
1927
+ alloc_cted key(this->node_alloc(), std::forward<K>(k));
1928
+ return emplace_unique(
1929
+ key.value(), std::move(key.value()), std::forward<V>(v));
1930
+ }
1931
+
1932
+ template <typename Key> emplace_return try_emplace_unique(Key&& k)
2631
1933
  {
2632
1934
  std::size_t key_hash = this->hash(k);
2633
- bucket_iterator itb =
2634
- buckets_.at(buckets_.position(key_hash));
1935
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2635
1936
 
2636
1937
  node_pointer pos = this->find_node_impl(k, itb);
2637
1938
 
@@ -2640,8 +1941,10 @@ namespace boost {
2640
1941
  } else {
2641
1942
  node_allocator_type alloc = node_alloc();
2642
1943
 
2643
- node_tmp tmp(
2644
- detail::func::construct_node_pair(alloc, boost::forward<Key>(k)),
1944
+ value_type* dispatch = BOOST_NULLPTR;
1945
+
1946
+ node_tmp tmp(detail::func::construct_node_from_key(
1947
+ dispatch, alloc, std::forward<Key>(k)),
2645
1948
  alloc);
2646
1949
 
2647
1950
  if (size_ + 1 > max_load_) {
@@ -2658,22 +1961,20 @@ namespace boost {
2658
1961
  }
2659
1962
 
2660
1963
  template <typename Key>
2661
- iterator try_emplace_hint_unique(c_iterator hint, BOOST_FWD_REF(Key) k)
1964
+ iterator try_emplace_hint_unique(c_iterator hint, Key&& k)
2662
1965
  {
2663
- if (hint.p && this->key_eq()(hint->first, k)) {
1966
+ if (hint.p && this->key_eq()(extractor::extract(*hint), k)) {
2664
1967
  return iterator(hint.p, hint.itb);
2665
1968
  } else {
2666
1969
  return try_emplace_unique(k).first;
2667
1970
  }
2668
1971
  }
2669
1972
 
2670
- template <typename Key, BOOST_UNORDERED_EMPLACE_TEMPLATE>
2671
- emplace_return try_emplace_unique(
2672
- BOOST_FWD_REF(Key) k, BOOST_UNORDERED_EMPLACE_ARGS)
1973
+ template <typename Key, typename... Args>
1974
+ emplace_return try_emplace_unique(Key&& k, Args&&... args)
2673
1975
  {
2674
1976
  std::size_t key_hash = this->hash(k);
2675
- bucket_iterator itb =
2676
- buckets_.at(buckets_.position(key_hash));
1977
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2677
1978
 
2678
1979
  node_pointer pos = this->find_node_impl(k, itb);
2679
1980
 
@@ -2683,7 +1984,7 @@ namespace boost {
2683
1984
 
2684
1985
  node_tmp b(
2685
1986
  boost::unordered::detail::func::construct_node_pair_from_args(
2686
- this->node_alloc(), k, BOOST_UNORDERED_EMPLACE_FORWARD),
1987
+ this->node_alloc(), k, std::forward<Args>(args)...),
2687
1988
  this->node_alloc());
2688
1989
 
2689
1990
  if (size_ + 1 > max_load_) {
@@ -2698,34 +1999,32 @@ namespace boost {
2698
1999
  return emplace_return(iterator(pos, itb), true);
2699
2000
  }
2700
2001
 
2701
- template <typename Key, BOOST_UNORDERED_EMPLACE_TEMPLATE>
2002
+ template <typename Key, typename... Args>
2702
2003
  iterator try_emplace_hint_unique(
2703
- c_iterator hint, BOOST_FWD_REF(Key) k, BOOST_UNORDERED_EMPLACE_ARGS)
2004
+ c_iterator hint, Key&& k, Args&&... args)
2704
2005
  {
2705
2006
  if (hint.p && this->key_eq()(hint->first, k)) {
2706
2007
  return iterator(hint.p, hint.itb);
2707
2008
  } else {
2708
- return try_emplace_unique(k, BOOST_UNORDERED_EMPLACE_FORWARD).first;
2009
+ return try_emplace_unique(k, std::forward<Args>(args)...).first;
2709
2010
  }
2710
2011
  }
2711
2012
 
2712
2013
  template <typename Key, typename M>
2713
- emplace_return insert_or_assign_unique(
2714
- BOOST_FWD_REF(Key) k, BOOST_FWD_REF(M) obj)
2014
+ emplace_return insert_or_assign_unique(Key&& k, M&& obj)
2715
2015
  {
2716
2016
  std::size_t key_hash = this->hash(k);
2717
- bucket_iterator itb =
2718
- buckets_.at(buckets_.position(key_hash));
2017
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2719
2018
 
2720
2019
  node_pointer p = this->find_node_impl(k, itb);
2721
2020
  if (p) {
2722
- p->value().second = boost::forward<M>(obj);
2021
+ p->value().second = std::forward<M>(obj);
2723
2022
  return emplace_return(iterator(p, itb), false);
2724
2023
  }
2725
2024
 
2726
- node_tmp b(boost::unordered::detail::func::construct_node_pair(
2727
- this->node_alloc(), boost::forward<Key>(k),
2728
- boost::forward<M>(obj)),
2025
+ node_tmp b(
2026
+ boost::unordered::detail::func::construct_node_pair(
2027
+ this->node_alloc(), std::forward<Key>(k), std::forward<M>(obj)),
2729
2028
  node_alloc());
2730
2029
 
2731
2030
  if (size_ + 1 > max_load_) {
@@ -2752,13 +2051,12 @@ namespace boost {
2752
2051
 
2753
2052
  const_key_type& k = this->get_key(np.ptr_);
2754
2053
  std::size_t const key_hash = this->hash(k);
2755
- bucket_iterator itb =
2756
- buckets_.at(buckets_.position(key_hash));
2054
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2757
2055
  node_pointer p = this->find_node_impl(k, itb);
2758
2056
 
2759
2057
  if (p) {
2760
2058
  iterator pos(p, itb);
2761
- result.node = boost::move(np);
2059
+ result.node = std::move(np);
2762
2060
  result.position = pos;
2763
2061
  result.inserted = false;
2764
2062
  return;
@@ -2791,8 +2089,7 @@ namespace boost {
2791
2089
  }
2792
2090
 
2793
2091
  std::size_t const key_hash = this->hash(k);
2794
- bucket_iterator itb =
2795
- buckets_.at(buckets_.position(key_hash));
2092
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2796
2093
  node_pointer p = this->find_node_impl(k, itb);
2797
2094
  if (p) {
2798
2095
  return iterator(p, itb);
@@ -2815,8 +2112,8 @@ namespace boost {
2815
2112
  void merge_unique(boost::unordered::detail::table<Types2>& other)
2816
2113
  {
2817
2114
  typedef boost::unordered::detail::table<Types2> other_table;
2818
- BOOST_STATIC_ASSERT((boost::is_same<node_type,
2819
- typename other_table::node_type>::value));
2115
+ BOOST_UNORDERED_STATIC_ASSERT(
2116
+ (std::is_same<node_type, typename other_table::node_type>::value));
2820
2117
  BOOST_ASSERT(this->node_alloc() == other.node_alloc());
2821
2118
 
2822
2119
  if (other.size_ == 0) {
@@ -2830,8 +2127,7 @@ namespace boost {
2830
2127
  const_key_type& key = other.get_key(pos.p);
2831
2128
  std::size_t const key_hash = this->hash(key);
2832
2129
 
2833
- bucket_iterator itb =
2834
- buckets_.at(buckets_.position(key_hash));
2130
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2835
2131
 
2836
2132
  if (this->find_node_impl(key, itb)) {
2837
2133
  ++pos;
@@ -2916,14 +2212,15 @@ namespace boost {
2916
2212
  return 1;
2917
2213
  }
2918
2214
 
2919
- iterator erase_node(c_iterator pos) {
2215
+ iterator erase_node(c_iterator pos)
2216
+ {
2920
2217
  c_iterator next = pos;
2921
2218
  ++next;
2922
-
2219
+
2923
2220
  bucket_iterator itb = pos.itb;
2924
- node_pointer* pp = boost::addressof(itb->next);
2221
+ node_pointer* pp = std::addressof(itb->next);
2925
2222
  while (*pp != pos.p) {
2926
- pp = boost::addressof((*pp)->next);
2223
+ pp = std::addressof((*pp)->next);
2927
2224
  }
2928
2225
 
2929
2226
  buckets_.extract_node_after(itb, pp);
@@ -2944,9 +2241,9 @@ namespace boost {
2944
2241
  // each bucket group so we have to retrieve it manually by iterating
2945
2242
  //
2946
2243
  bucket_iterator itb = first.itb;
2947
- node_pointer* pp = boost::addressof(itb->next);
2244
+ node_pointer* pp = std::addressof(itb->next);
2948
2245
  while (*pp != first.p) {
2949
- pp = boost::addressof((*pp)->next);
2246
+ pp = std::addressof((*pp)->next);
2950
2247
  }
2951
2248
 
2952
2249
  while (*pp != last.p) {
@@ -2956,7 +2253,6 @@ namespace boost {
2956
2253
  this->delete_node(p);
2957
2254
  --size_;
2958
2255
 
2959
-
2960
2256
  bool const at_end = !(*pp);
2961
2257
  bool const is_empty_bucket = !itb->next;
2962
2258
 
@@ -2966,7 +2262,7 @@ namespace boost {
2966
2262
  } else {
2967
2263
  ++itb;
2968
2264
  }
2969
- pp = boost::addressof(itb->next);
2265
+ pp = std::addressof(itb->next);
2970
2266
  }
2971
2267
  }
2972
2268
 
@@ -2976,7 +2272,7 @@ namespace boost {
2976
2272
  ////////////////////////////////////////////////////////////////////////
2977
2273
  // fill_buckets_unique
2978
2274
 
2979
- void copy_buckets(table const& src, true_type)
2275
+ void copy_buckets(table const& src, std::true_type)
2980
2276
  {
2981
2277
  BOOST_ASSERT(size_ == 0);
2982
2278
 
@@ -2997,7 +2293,7 @@ namespace boost {
2997
2293
  }
2998
2294
  }
2999
2295
 
3000
- void move_assign_buckets(table& src, true_type)
2296
+ void move_assign_buckets(table& src, std::true_type)
3001
2297
  {
3002
2298
  BOOST_ASSERT(size_ == 0);
3003
2299
  BOOST_ASSERT(max_load_ >= src.size_);
@@ -3006,14 +2302,14 @@ namespace boost {
3006
2302
  node_allocator_type alloc = this->node_alloc();
3007
2303
 
3008
2304
  for (iterator pos = src.begin(); pos != last; ++pos) {
3009
- value_type value = boost::move(*pos);
2305
+ value_type value = std::move(*pos);
3010
2306
  const_key_type& key = extractor::extract(value);
3011
2307
  std::size_t const key_hash = this->hash(key);
3012
2308
 
3013
2309
  bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
3014
2310
 
3015
2311
  node_tmp tmp(
3016
- detail::func::construct_node(alloc, boost::move(value)), alloc);
2312
+ detail::func::construct_node(alloc, std::move(value)), alloc);
3017
2313
 
3018
2314
  buckets_.insert_node(itb, tmp.release());
3019
2315
  ++size_;
@@ -3051,8 +2347,8 @@ namespace boost {
3051
2347
  return true;
3052
2348
  }
3053
2349
 
3054
- static bool group_equals_equiv(iterator n1, iterator end1,
3055
- iterator n2, iterator end2)
2350
+ static bool group_equals_equiv(
2351
+ iterator n1, iterator end1, iterator n2, iterator end2)
3056
2352
  {
3057
2353
  for (;;) {
3058
2354
  if (*n1 != *n2)
@@ -3100,8 +2396,7 @@ namespace boost {
3100
2396
  return true;
3101
2397
  }
3102
2398
 
3103
- static bool find_equiv(
3104
- iterator n, iterator last, value_type const& v)
2399
+ static bool find_equiv(iterator n, iterator last, value_type const& v)
3105
2400
  {
3106
2401
  for (; n != last; ++n)
3107
2402
  if (*n == v)
@@ -3126,8 +2421,7 @@ namespace boost {
3126
2421
  node_tmp a(n, this->node_alloc());
3127
2422
  const_key_type& k = this->get_key(a.node_);
3128
2423
  std::size_t key_hash = this->hash(k);
3129
- bucket_iterator itb =
3130
- buckets_.at(buckets_.position(key_hash));
2424
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
3131
2425
  node_pointer hint = this->find_node_impl(k, itb);
3132
2426
 
3133
2427
  if (size_ + 1 > max_load_) {
@@ -3195,8 +2489,7 @@ namespace boost {
3195
2489
  const_key_type& k = this->get_key(np.ptr_);
3196
2490
  std::size_t key_hash = this->hash(k);
3197
2491
 
3198
- bucket_iterator itb =
3199
- buckets_.at(buckets_.position(key_hash));
2492
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
3200
2493
 
3201
2494
  node_pointer hint = this->find_node_impl(k, itb);
3202
2495
  buckets_.insert_node_hint(itb, np.ptr_, hint);
@@ -3325,7 +2618,7 @@ namespace boost {
3325
2618
  ////////////////////////////////////////////////////////////////////////
3326
2619
  // fill_buckets
3327
2620
 
3328
- void copy_buckets(table const& src, false_type)
2621
+ void copy_buckets(table const& src, std::false_type)
3329
2622
  {
3330
2623
  BOOST_ASSERT(size_ == 0);
3331
2624
 
@@ -3346,7 +2639,7 @@ namespace boost {
3346
2639
  }
3347
2640
  }
3348
2641
 
3349
- void move_assign_buckets(table& src, false_type)
2642
+ void move_assign_buckets(table& src, std::false_type)
3350
2643
  {
3351
2644
  BOOST_ASSERT(size_ == 0);
3352
2645
  BOOST_ASSERT(max_load_ >= src.size_);
@@ -3355,7 +2648,7 @@ namespace boost {
3355
2648
  node_allocator_type alloc = this->node_alloc();
3356
2649
 
3357
2650
  for (iterator pos = src.begin(); pos != last; ++pos) {
3358
- value_type value = boost::move(*pos);
2651
+ value_type value = std::move(*pos);
3359
2652
  const_key_type& key = extractor::extract(value);
3360
2653
  std::size_t const key_hash = this->hash(key);
3361
2654
 
@@ -3363,7 +2656,7 @@ namespace boost {
3363
2656
 
3364
2657
  node_pointer hint = this->find_node_impl(key, itb);
3365
2658
  node_tmp tmp(
3366
- detail::func::construct_node(alloc, boost::move(value)), alloc);
2659
+ detail::func::construct_node(alloc, std::move(value)), alloc);
3367
2660
 
3368
2661
  buckets_.insert_node_hint(itb, tmp.release(), hint);
3369
2662
  ++size_;
@@ -3380,7 +2673,7 @@ namespace boost {
3380
2673
  for (; itb != last;) {
3381
2674
  bucket_iterator next_itb = itb;
3382
2675
  ++next_itb;
3383
- node_pointer* pp = boost::addressof(itb->next);
2676
+ node_pointer* pp = std::addressof(itb->next);
3384
2677
  while (*pp) {
3385
2678
  node_pointer p = *pp;
3386
2679
  buckets_.extract_node_after(itb, pp);
@@ -3429,7 +2722,7 @@ namespace boost {
3429
2722
  inline void table<Types>::rehash_impl(std::size_t num_buckets)
3430
2723
  {
3431
2724
  bucket_array_type new_buckets(
3432
- num_buckets, buckets_.get_node_allocator());
2725
+ num_buckets, buckets_.get_allocator());
3433
2726
 
3434
2727
  BOOST_TRY
3435
2728
  {
@@ -3462,11 +2755,11 @@ namespace boost {
3462
2755
  }
3463
2756
  }
3464
2757
  buckets_.unlink_empty_buckets();
3465
- BOOST_RETHROW;
2758
+ BOOST_RETHROW
3466
2759
  }
3467
2760
  BOOST_CATCH_END
3468
2761
 
3469
- buckets_ = boost::move(new_buckets);
2762
+ buckets_ = std::move(new_buckets);
3470
2763
  recalculate_max_load();
3471
2764
  }
3472
2765
 
@@ -3497,8 +2790,7 @@ namespace boost {
3497
2790
  sizeof(choice2::type)
3498
2791
  };
3499
2792
 
3500
- typedef
3501
- typename boost::conditional<value, Key const&, no_key>::type type;
2793
+ typedef typename std::conditional<value, Key const&, no_key>::type type;
3502
2794
  };
3503
2795
 
3504
2796
  template <class ValueType> struct set_extractor
@@ -3508,10 +2800,7 @@ namespace boost {
3508
2800
 
3509
2801
  static key_type const& extract(value_type const& v) { return v; }
3510
2802
 
3511
- static key_type const& extract(BOOST_UNORDERED_RV_REF(value_type) v)
3512
- {
3513
- return v;
3514
- }
2803
+ static key_type const& extract(value_type&& v) { return v; }
3515
2804
 
3516
2805
  static no_key extract() { return no_key(); }
3517
2806
 
@@ -3520,25 +2809,17 @@ namespace boost {
3520
2809
  return no_key();
3521
2810
  }
3522
2811
 
3523
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
3524
2812
  template <class Arg1, class Arg2, class... Args>
3525
2813
  static no_key extract(Arg1 const&, Arg2 const&, Args const&...)
3526
2814
  {
3527
2815
  return no_key();
3528
2816
  }
3529
- #else
3530
- template <class Arg1, class Arg2>
3531
- static no_key extract(Arg1 const&, Arg2 const&)
3532
- {
3533
- return no_key();
3534
- }
3535
- #endif
3536
2817
  };
3537
2818
 
3538
2819
  template <class ValueType> struct map_extractor
3539
2820
  {
3540
2821
  typedef ValueType value_type;
3541
- typedef typename boost::remove_const<typename boost::unordered::detail::
2822
+ typedef typename std::remove_const<typename boost::unordered::detail::
3542
2823
  pair_traits<ValueType>::first_type>::type key_type;
3543
2824
 
3544
2825
  static key_type const& extract(value_type const& v) { return v.first; }
@@ -3556,22 +2837,6 @@ namespace boost {
3556
2837
  return v.first;
3557
2838
  }
3558
2839
 
3559
- #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
3560
- template <class Second>
3561
- static key_type const& extract(
3562
- boost::rv<std::pair<key_type, Second> > const& v)
3563
- {
3564
- return v.first;
3565
- }
3566
-
3567
- template <class Second>
3568
- static key_type const& extract(
3569
- boost::rv<std::pair<key_type const, Second> > const& v)
3570
- {
3571
- return v.first;
3572
- }
3573
- #endif
3574
-
3575
2840
  template <class Arg1>
3576
2841
  static key_type const& extract(key_type const& k, Arg1 const&)
3577
2842
  {
@@ -3586,63 +2851,40 @@ namespace boost {
3586
2851
  }
3587
2852
 
3588
2853
  template <class Arg1, class Arg2>
3589
- static no_key extract(Arg1 const&, Arg2 const&)
2854
+ static typename std::conditional<
2855
+ (is_similar<Arg1, key_type>::value ||
2856
+ is_complete_and_move_constructible<key_type>::value),
2857
+ converting_key, no_key>::type
2858
+ extract(Arg1 const&, Arg2 const&)
3590
2859
  {
3591
- return no_key();
2860
+ return {};
3592
2861
  }
3593
2862
 
3594
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
3595
2863
  template <class Arg1, class Arg2, class Arg3, class... Args>
3596
2864
  static no_key extract(
3597
2865
  Arg1 const&, Arg2 const&, Arg3 const&, Args const&...)
3598
2866
  {
3599
2867
  return no_key();
3600
2868
  }
3601
- #endif
3602
-
3603
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
3604
-
3605
- #define BOOST_UNORDERED_KEY_FROM_TUPLE(namespace_) \
3606
- template <typename T2> \
3607
- static no_key extract(boost::unordered::piecewise_construct_t, \
3608
- namespace_ tuple<> const&, T2 const&) \
3609
- { \
3610
- return no_key(); \
3611
- } \
3612
- \
3613
- template <typename T, typename T2> \
3614
- static typename is_key<key_type, T>::type extract( \
3615
- boost::unordered::piecewise_construct_t, namespace_ tuple<T> const& k, \
3616
- T2 const&) \
3617
- { \
3618
- return typename is_key<key_type, T>::type(namespace_ get<0>(k)); \
3619
- }
3620
-
3621
- #else
3622
2869
 
3623
- #define BOOST_UNORDERED_KEY_FROM_TUPLE(namespace_) \
3624
- static no_key extract( \
3625
- boost::unordered::piecewise_construct_t, namespace_ tuple<> const&) \
3626
- { \
3627
- return no_key(); \
3628
- } \
3629
- \
3630
- template <typename T> \
3631
- static typename is_key<key_type, T>::type extract( \
3632
- boost::unordered::piecewise_construct_t, namespace_ tuple<T> const& k) \
3633
- { \
3634
- return typename is_key<key_type, T>::type(namespace_ get<0>(k)); \
3635
- }
3636
-
3637
- #endif
3638
-
3639
- BOOST_UNORDERED_KEY_FROM_TUPLE(boost::)
3640
-
3641
- #if BOOST_UNORDERED_TUPLE_ARGS
3642
- BOOST_UNORDERED_KEY_FROM_TUPLE(std::)
3643
- #endif
2870
+ template <template <class...> class Tuple, typename T2>
2871
+ static no_key extract(
2872
+ std::piecewise_construct_t, Tuple<> const&, T2 const&)
2873
+ {
2874
+ return no_key();
2875
+ }
3644
2876
 
3645
- #undef BOOST_UNORDERED_KEY_FROM_TUPLE
2877
+ template <template <typename...> class Tuple, typename T, typename T2,
2878
+ typename... Args>
2879
+ static auto extract(
2880
+ std::piecewise_construct_t, Tuple<T, Args...> const& k, T2 const&) ->
2881
+ typename std::enable_if<
2882
+ !std::is_same<T, boost::tuples::null_type>::value,
2883
+ typename is_key<key_type, T>::type>::type
2884
+ {
2885
+ using std::get;
2886
+ return typename is_key<key_type, T>::type(get<0>(k));
2887
+ }
3646
2888
  };
3647
2889
 
3648
2890
  template <class Container, class Predicate>
@@ -3663,12 +2905,8 @@ namespace boost {
3663
2905
 
3664
2906
  return (size - c.size());
3665
2907
  }
3666
- }
3667
- }
3668
- }
3669
-
3670
- #undef BOOST_UNORDERED_EMPLACE_TEMPLATE
3671
- #undef BOOST_UNORDERED_EMPLACE_ARGS
3672
- #undef BOOST_UNORDERED_EMPLACE_FORWARD
2908
+ } // namespace detail
2909
+ } // namespace unordered
2910
+ } // namespace boost
3673
2911
 
3674
2912
  #endif