passenger 6.0.20 → 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 (1171) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +41 -1
  3. data/CONTRIBUTORS +2 -0
  4. data/README.md +2 -2
  5. data/bin/passenger-install-nginx-module +4 -4
  6. data/build/support/cxx_dependency_map.rb +155 -54
  7. data/dev/copy_boost_headers +21 -7
  8. data/dev/nginx_version_sha256 +72 -0
  9. data/src/agent/AgentMain.cpp +2 -8
  10. data/src/agent/Core/AdminPanelConnector.h +2 -3
  11. data/src/agent/Core/ApiServer.h +1 -1
  12. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +8 -1
  13. data/src/agent/Core/Config.h +6 -3
  14. data/src/agent/Core/Controller/AppResponse.h +0 -1
  15. data/src/agent/Core/Controller/Config.h +2 -2
  16. data/src/agent/Core/Controller/SendRequest.cpp +2 -2
  17. data/src/agent/Core/CoreMain.cpp +1 -0
  18. data/src/agent/Core/ResponseCache.h +3 -2
  19. data/src/agent/Core/SecurityUpdateChecker.h +1 -1
  20. data/src/agent/Core/SpawningKit/Handshake/Perform.h +4 -4
  21. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +2 -2
  22. data/src/agent/ExecHelper/ExecHelperMain.cpp +10 -12
  23. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +7 -10
  24. data/src/agent/MainFunctions.h +38 -0
  25. data/src/agent/Shared/ApiServerUtils.h +3 -2
  26. data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -1
  27. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +2 -3
  28. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +1 -0
  29. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +6 -4
  30. data/src/agent/Watchdog/ApiServer.h +1 -1
  31. data/src/agent/Watchdog/Config.h +1 -1
  32. data/src/agent/Watchdog/WatchdogMain.cpp +5 -12
  33. data/src/apache2_module/Hooks.cpp +26 -1
  34. data/src/cxx_supportlib/ConfigKit/Common.h +1 -1
  35. data/src/cxx_supportlib/Constants.h +1 -1
  36. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -1
  37. data/src/cxx_supportlib/FileTools/PathManip.cpp +10 -1
  38. data/src/cxx_supportlib/IOTools/IOUtils.cpp +2 -6
  39. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +3 -3
  40. data/src/cxx_supportlib/JsonTools/CBindings.cpp +0 -2
  41. data/src/cxx_supportlib/JsonTools/JsonUtils.h +4 -4
  42. data/src/cxx_supportlib/LoggingKit/Context.h +16 -21
  43. data/src/cxx_supportlib/LoggingKit/Forward.h +0 -2
  44. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +36 -72
  45. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +12 -4
  46. data/src/cxx_supportlib/MemoryKit/mbuf.h +1 -1
  47. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +1 -1
  48. data/src/cxx_supportlib/ResourceLocator.h +1 -1
  49. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +3 -94
  50. data/src/cxx_supportlib/SecurityKit/Crypto.h +0 -8
  51. data/src/cxx_supportlib/ServerKit/Context.h +6 -0
  52. data/src/cxx_supportlib/ServerKit/Errors.h +3 -2
  53. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +96 -64
  54. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +4 -1
  55. data/src/cxx_supportlib/ServerKit/HttpRequest.h +2 -2
  56. data/src/cxx_supportlib/ServerKit/HttpServer.h +3 -2
  57. data/src/cxx_supportlib/ServerKit/llerrors.h +84 -0
  58. data/src/cxx_supportlib/ServerKit/llhttp.c +10168 -0
  59. data/src/cxx_supportlib/ServerKit/llhttp.h +903 -0
  60. data/src/cxx_supportlib/ServerKit/llhttp_api.c +510 -0
  61. data/src/cxx_supportlib/ServerKit/llhttp_http.c +170 -0
  62. data/src/cxx_supportlib/ServerKit/llversion.h +12 -0
  63. data/src/cxx_supportlib/ServerKit/url_parser.c +574 -0
  64. data/src/cxx_supportlib/ServerKit/url_parser.h +74 -0
  65. data/src/cxx_supportlib/StaticString.h +3 -1
  66. data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
  67. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +12 -3
  68. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +5 -0
  69. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +2 -2
  70. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +14 -14
  71. data/src/cxx_supportlib/SystemTools/UserDatabase.h +6 -10
  72. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +11 -9
  73. data/src/cxx_supportlib/Utils.cpp +1 -1
  74. data/src/cxx_supportlib/oxt/implementation.cpp +1 -2
  75. data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +26 -32
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +61 -62
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +34 -42
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/append.hpp +10 -23
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +21 -34
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +26 -45
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +26 -43
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +28 -46
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +42 -59
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +154 -883
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +1 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +64 -98
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +17 -22
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +18 -23
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +4 -8
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +30 -42
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +65 -96
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +20 -29
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +36 -48
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +31 -44
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +19 -22
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +34 -45
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +106 -153
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +6 -82
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +6 -51
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +30 -40
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +50 -76
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +13 -15
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +3 -3
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +23 -32
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +20 -29
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +75 -294
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +75 -283
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +89 -288
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +73 -275
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +170 -328
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +29 -39
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +26 -39
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +32 -48
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +26 -39
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +4 -4
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +25 -85
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +16 -16
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +8 -25
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +17 -17
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +53 -272
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +52 -79
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/connect_pipe.hpp +1 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +11 -24
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +2 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +22 -26
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +188 -275
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +12 -20
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +2 -10
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +2 -4
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +5 -13
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +21 -20
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +2 -2
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +129 -563
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +2 -3
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +3 -7
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +2 -23
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +4 -4
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +21 -97
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +1 -1
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +91 -975
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +3 -11
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -5
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +2 -24
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +4 -4
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +1 -1
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +4 -4
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +4 -4
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +1 -1
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +1 -1
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +3 -5
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/exception.hpp +2 -13
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +8 -60
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +5 -6
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +3 -43
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -12
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +9 -10
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +3 -5
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +41 -104
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +3 -3
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +9 -15
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +73 -127
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +32 -11
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +1 -1
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +1 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +5 -5
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_descriptor_service.ipp +2 -2
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_file_service.ipp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.ipp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_socket_service_base.ipp +2 -2
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +1 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_serial_port_service.ipp +1 -1
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +2 -2
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +2 -2
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +3 -3
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +1 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +2 -3
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +63 -5
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +47 -68
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +2 -3
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +1 -1
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +12 -12
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_defer.hpp +56 -101
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_dispatch.hpp +56 -92
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_post.hpp +56 -101
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +6 -10
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +3 -3
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_op.hpp +3 -3
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_service.hpp +9 -9
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +3 -3
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_op.hpp +3 -3
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_file_service.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_null_buffers_op.hpp +3 -4
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_operation.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_service.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_accept_op.hpp +7 -12
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_connect_op.hpp +3 -4
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recv_op.hpp +3 -3
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +4 -4
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +3 -3
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_send_op.hpp +3 -3
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_sendto_op.hpp +3 -3
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service.hpp +11 -13
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service_base.hpp +9 -9
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_wait_op.hpp +3 -4
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +7 -49
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +1 -1
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +1 -6
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +12 -44
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +3 -5
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +4 -15
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +1 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +1 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +3 -3
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +1 -1
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_serial_port_service.hpp +1 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +9 -9
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +4 -5
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +11 -16
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +4 -5
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +4 -5
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +4 -5
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +4 -5
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +4 -5
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +4 -5
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +11 -13
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +15 -15
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +4 -5
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +1 -1
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +2 -2
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +4 -13
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +3 -4
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +3 -4
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +3 -3
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +1 -1
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +1 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_task.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +2 -3
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +3 -3
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +2 -2
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +1 -1
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +1 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +3 -5
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -6
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -6
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -6
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -6
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -6
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -6
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +13 -13
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +1 -1
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +3 -5
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +1 -1
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +12 -22
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +2 -2
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +1 -1
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +104 -90
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +4 -4
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +3 -3
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +2 -2
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +20 -34
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +7 -117
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +21 -26
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +34 -112
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +229 -1019
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +3 -4
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +296 -536
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +232 -409
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +20 -73
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +30 -72
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +24 -170
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +3 -3
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +2 -30
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +240 -398
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +20 -73
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +149 -296
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +56 -59
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +149 -296
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +1 -16
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +1 -25
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +59 -43
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +56 -61
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +1 -1
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +20 -24
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +1 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +7 -7
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +55 -33
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +55 -33
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +25 -28
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel.hpp +3 -3
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_error.hpp +1 -1
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +15 -15
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +2 -2
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/concurrent_channel.hpp +3 -3
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +1 -1
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +10 -13
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_message.hpp +20 -20
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +130 -53
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_payload.hpp +92 -9
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +15 -8
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +73 -25
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +12 -12
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +48 -48
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/has_signature.hpp +1 -1
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +39 -30
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +33 -96
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/channel_error.ipp +2 -2
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +16 -17
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +14 -14
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +56 -60
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +3 -2
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +2 -2
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +27 -31
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +1 -1
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +14 -20
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +11 -11
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/file_base.hpp +1 -1
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -6
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -6
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +10 -14
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +10 -17
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +37 -100
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +62 -137
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +22 -21
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +55 -178
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +55 -178
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancellation_signal.ipp +1 -1
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +44 -36
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +84 -234
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.hpp +1 -1
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.ipp +1 -1
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +32 -97
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +32 -41
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +5 -58
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +4 -4
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +3 -35
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +60 -43
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +3 -3
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +39 -56
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +1 -1
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +4 -8
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +36 -98
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +206 -429
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +60 -206
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +456 -970
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +36 -420
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +205 -421
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -3
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +2 -2
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +2 -2
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +19 -25
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +32 -109
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +1 -1
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +2 -2
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +77 -423
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +213 -427
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +58 -194
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +91 -120
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +33 -25
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +26 -35
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +25 -34
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +13 -19
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +16 -22
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +33 -42
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +13 -18
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +15 -20
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +4 -4
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +26 -35
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +46 -76
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +4 -8
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +17 -1
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +9 -13
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +17 -17
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -14
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +18 -22
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +9 -13
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +24 -32
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -3
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -3
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +1 -1
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +16 -20
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +14 -18
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +7 -7
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +1 -1
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +1 -1
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +6 -6
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/is_contiguous_iterator.hpp +2 -2
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +2 -6
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +1 -1
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +1 -1
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/local/seq_packet_protocol.hpp +4 -4
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +3 -9
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -61
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +29 -105
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +21 -29
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +24 -34
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +1 -1
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +1 -1
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +1 -1
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +21 -26
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +176 -333
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/prepend.hpp +11 -23
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +57 -70
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/random_access_file.hpp +1 -1
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +136 -168
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +35 -52
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +256 -298
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/readable_pipe.hpp +1 -1
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/recycling_allocator.hpp +15 -15
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +7 -9
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +35 -47
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +108 -246
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +70 -79
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +1 -1
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +1 -1
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_base.hpp +10 -21
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +1 -1
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +127 -161
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +1 -3
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +3 -3
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +3 -7
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +3 -3
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +3 -7
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +16 -75
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -3
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +4 -4
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +15 -19
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -2
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -3
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +1 -1
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +2 -4
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +3 -3
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +1 -1
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +1 -1
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +1 -1
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +51 -82
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -1
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +1 -1
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -6
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +91 -118
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_file.hpp +1 -1
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +3 -3
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +62 -62
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -6
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +35 -48
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +91 -273
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +14 -18
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +16 -20
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +16 -20
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +16 -20
  589. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +16 -20
  590. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +16 -20
  591. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +15 -22
  592. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +16 -20
  593. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +16 -20
  594. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +16 -20
  595. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +16 -20
  596. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +20 -26
  597. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +22 -30
  598. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +22 -30
  599. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  600. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +1 -1
  601. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  602. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  603. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  604. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +6 -24
  605. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  606. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  607. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  608. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +15 -21
  609. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +8 -12
  610. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +2 -6
  611. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  612. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  613. data/src/cxx_supportlib/vendor-modified/boost/asio/writable_pipe.hpp +1 -1
  614. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +122 -146
  615. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +34 -50
  616. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  617. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +1 -27
  618. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +4 -2
  619. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +2 -3
  620. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +2 -3
  621. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +1 -1
  622. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +12 -13
  623. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +7 -8
  624. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +26 -27
  625. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +122 -35
  626. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +2 -3
  627. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +7 -0
  628. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +1 -2
  629. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +3 -4
  630. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +2 -3
  631. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +2 -3
  632. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +2 -61
  633. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +229 -1740
  634. data/src/cxx_supportlib/vendor-modified/boost/bind/{bind_cc.hpp → detail/bind_cc.hpp} +20 -20
  635. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf2_cc.hpp +210 -0
  636. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf_cc.hpp +405 -0
  637. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/integer_sequence.hpp +111 -0
  638. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/tuple_for_each.hpp +64 -0
  639. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +138 -289
  640. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +3 -16
  641. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +0 -280
  642. data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +0 -7
  643. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/is_evenly_divisible_by.hpp +1 -7
  644. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/requires_cxx11.hpp +1 -1
  645. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +1 -0
  646. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +1 -0
  647. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +1 -0
  648. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  649. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +4 -1
  650. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  651. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +4 -1
  652. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
  653. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +41 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +3 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +4 -0
  656. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +8 -2
  657. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +4 -0
  658. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +3 -1
  659. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +3 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +3 -0
  661. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -2
  662. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +4 -0
  663. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +3 -0
  664. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +3 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -0
  666. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +3 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +3 -0
  668. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +3 -0
  669. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +7 -0
  670. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  671. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +1 -0
  672. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +16 -1
  673. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +40 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +6 -7
  675. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +18 -19
  676. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +27 -29
  677. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +112 -112
  678. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +40 -40
  679. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  680. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +10 -10
  681. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +22 -22
  682. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +30 -25
  683. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +48 -48
  684. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +6 -6
  685. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +129 -129
  686. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +162 -163
  687. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +1 -2
  688. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +6 -8
  689. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +32 -32
  690. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +6 -6
  691. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +18 -19
  692. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
  693. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +77 -77
  694. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +3 -3
  695. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +44 -1
  696. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +78 -78
  697. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +231 -231
  698. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +85 -85
  699. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -33
  700. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +107 -109
  701. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +9 -11
  702. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +10 -11
  703. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +18 -8
  704. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +2 -2
  705. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  706. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +80 -80
  707. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +81 -81
  708. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +24 -24
  709. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +115 -109
  710. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +101 -101
  711. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +32 -32
  712. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +150 -190
  713. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +165 -165
  714. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_integral.hpp +146 -0
  715. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +6 -6
  716. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +84 -86
  717. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple_like.hpp +5 -99
  718. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/mulx.hpp +20 -20
  719. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +25 -126
  720. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +27 -21
  721. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +4 -5
  722. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +8 -41
  723. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_tuple_like.hpp +4 -10
  724. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +6 -7
  725. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +20 -6
  726. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +19 -1
  727. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +9 -0
  728. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_pause.hpp +1 -1
  729. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +1 -1
  730. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +7 -0
  731. data/src/cxx_supportlib/vendor-modified/boost/core/functor.hpp +41 -0
  732. data/src/cxx_supportlib/vendor-modified/boost/core/invoke_swap.hpp +93 -0
  733. data/src/cxx_supportlib/vendor-modified/boost/core/launder.hpp +17 -3
  734. data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +7 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +6 -55
  736. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -6
  737. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +6 -97
  738. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +1 -1
  739. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +1 -1
  740. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +1 -1
  741. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +2 -2
  742. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +1 -1
  743. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +1 -1
  744. data/src/cxx_supportlib/vendor-modified/boost/{ratio → exception}/detail/requires_cxx11.hpp +7 -5
  745. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +1 -1
  746. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +1 -1
  747. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +1 -1
  748. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +1 -1
  749. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +1 -1
  750. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +1 -1
  751. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +1 -1
  752. data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +1 -3
  753. data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +1 -3
  754. data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +1 -3
  755. data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +1 -3
  756. data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +1 -3
  757. data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +1 -3
  758. data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +1 -3
  759. data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +1 -3
  760. data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +1 -3
  761. data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +1 -3
  762. data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +1 -3
  763. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +21 -166
  764. data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +36 -41
  765. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +267 -418
  766. data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +1 -31
  767. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +5 -63
  768. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +2 -2
  769. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +24 -25
  770. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +12 -13
  771. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +1 -1
  772. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +24 -25
  773. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +65 -66
  774. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +20 -20
  775. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +2 -2
  776. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +10 -10
  777. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +3 -3
  778. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +5 -5
  779. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +3 -3
  780. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +24 -24
  781. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +1 -1
  782. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +1 -1
  783. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +14 -15
  784. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +277 -0
  785. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +11 -49
  786. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_integral.hpp +119 -0
  787. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_mix.hpp +130 -0
  788. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +41 -41
  789. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +14 -21
  790. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +6 -6
  791. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +12 -12
  792. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +7 -7
  793. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +19 -19
  794. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +6 -0
  795. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +3 -3
  796. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +6 -17
  797. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  798. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +14 -14
  799. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +20 -21
  800. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +22 -22
  801. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +21 -21
  802. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +28 -28
  803. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +32 -1
  804. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +268 -239
  805. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +9 -9
  806. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +56 -57
  807. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +3 -3
  808. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
  809. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +3 -3
  810. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +12 -13
  811. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +24 -25
  812. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +24 -25
  813. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +14 -15
  814. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +1 -1
  815. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +60 -61
  816. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +24 -25
  817. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +12 -13
  818. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +18 -19
  819. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +4 -0
  820. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +36 -37
  821. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -34
  822. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +11 -11
  823. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +2 -2
  824. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +7 -13
  825. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +59 -0
  826. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +113 -131
  827. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +611 -633
  828. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +85 -79
  829. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +25 -32
  830. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +22 -29
  831. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +73 -0
  832. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  833. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +21 -16
  834. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +7 -9
  835. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +22 -161
  836. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +9 -30
  837. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +4 -2
  838. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +3 -1
  839. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +3 -1
  840. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +24 -14
  841. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +5 -5
  842. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +1 -0
  843. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +1 -0
  844. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +5 -19
  845. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +10 -10
  846. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +1 -1
  847. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +15 -15
  848. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +10 -10
  849. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +3 -3
  850. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  851. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -2
  852. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  853. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +28 -28
  854. data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +1 -1
  855. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +67 -17
  856. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +5 -2
  857. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +22 -22
  858. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +48 -48
  859. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +59 -0
  860. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +9 -0
  861. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +3 -1
  862. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +9 -0
  863. data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +9 -0
  864. data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +9 -0
  865. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  866. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +8 -0
  867. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +2 -1
  868. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +6 -6
  869. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +2 -2
  870. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  871. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msvc.h +53 -0
  872. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +1 -0
  873. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +1 -1
  875. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  876. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +2 -0
  877. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +1 -1
  878. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +203 -0
  879. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +14 -14
  880. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +2 -2
  881. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +1 -0
  882. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +4 -87
  883. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/gcd_lcm.hpp +53 -0
  884. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_evenly_divisible_by.hpp +32 -0
  885. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_ratio.hpp +28 -0
  886. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +1 -3
  887. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +5 -249
  888. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +30 -56
  889. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +0 -533
  890. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +1 -1
  891. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +0 -11
  892. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +70 -0
  893. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +0 -11
  894. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +1 -8
  895. data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +3 -12
  896. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +13 -57
  897. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +5 -29
  898. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +51 -124
  899. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +29 -52
  900. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +7 -7
  901. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +4 -4
  902. data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +7 -7
  903. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +3 -13
  904. data/src/cxx_supportlib/vendor-modified/boost/system/detail/mutex.hpp +8 -1
  905. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +1 -46
  906. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +5 -9
  907. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +2 -2
  908. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +7 -7
  909. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +3 -3
  910. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +2 -2
  911. data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +3 -3
  912. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +1 -1
  913. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +1 -24
  914. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +1 -14
  915. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +1 -14
  916. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +2 -12
  917. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +0 -11
  918. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +0 -2
  919. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +0 -16
  920. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +0 -11
  921. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +0 -11
  922. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +0 -19
  923. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +4 -6
  924. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -26
  925. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +1 -18
  926. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +1 -14
  927. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +11 -4
  928. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_to_unsigned.hpp +55 -0
  929. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_trim.hpp +29 -0
  930. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +5 -5
  931. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +0 -1
  932. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +3 -2
  933. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +4 -4
  934. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +3 -3
  935. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -1
  936. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +22 -0
  937. data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +2 -3
  938. data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +1 -10
  939. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -6
  940. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +2 -4
  941. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +2 -4
  942. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +2 -5
  943. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +2 -15
  944. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +2 -54
  945. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +2 -6
  946. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +2 -9
  947. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +2 -46
  948. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +2 -5
  949. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +2 -29
  950. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +2 -9
  951. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +2 -12
  952. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +2 -6
  953. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +2 -5
  954. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +2 -9
  955. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +2 -19
  956. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +2 -5
  957. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +2 -5
  958. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +2 -12
  959. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +2 -4
  960. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +2 -10
  961. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +2 -5
  962. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +8 -203
  963. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +145 -103
  964. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +1 -4
  965. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +716 -0
  966. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +52 -0
  967. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocator_constructed.hpp +59 -0
  968. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/archive_constructed.hpp +71 -0
  969. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/bad_archive_exception.hpp +27 -0
  970. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +105 -0
  971. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +120 -85
  972. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +531 -91
  973. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +346 -194
  974. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/element_type.hpp +10 -6
  975. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +13 -0
  976. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +2 -8
  977. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +22 -15
  978. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +10 -13
  979. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/reentrancy_check.hpp +138 -0
  980. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +150 -55
  981. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +346 -1039
  982. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +2 -0
  983. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/narrow_cast.hpp +8 -8
  984. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/opt_storage.hpp +30 -0
  985. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +95 -144
  986. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialization_version.hpp +74 -0
  987. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_container.hpp +204 -0
  988. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_fca_container.hpp +156 -0
  989. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_tracked_address.hpp +104 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/static_assert.hpp +16 -0
  991. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/throw_exception.hpp +30 -0
  992. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +123 -19
  993. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +4 -5
  994. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +65 -46
  995. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +1 -5
  996. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +41 -23
  997. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +1 -5
  998. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +324 -997
  999. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +7 -12
  1000. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +57 -46
  1001. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +1 -5
  1002. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +35 -24
  1003. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +1 -5
  1004. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +229 -629
  1005. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +8 -13
  1006. data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +4 -1
  1007. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +8 -8
  1008. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1009. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +2 -9
  1010. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +0 -11
  1011. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +14 -20
  1012. data/src/helper-scripts/wsgi-loader.py +2 -2
  1013. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +2 -2
  1014. data/src/ruby_supportlib/phusion_passenger/common_library.rb +16 -5
  1015. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +1 -1
  1016. data/src/ruby_supportlib/phusion_passenger/native_support.rb +10 -7
  1017. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +3 -7
  1018. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +14 -0
  1019. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +4 -1
  1020. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +6 -6
  1021. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +11 -12
  1022. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -1
  1023. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +4 -0
  1024. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +5 -1
  1025. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  1026. metadata +50 -149
  1027. data/src/cxx_supportlib/ServerKit/http_parser.cpp +0 -2575
  1028. data/src/cxx_supportlib/ServerKit/http_parser.h +0 -452
  1029. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +0 -456
  1030. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +0 -91
  1031. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +0 -93
  1032. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +0 -70
  1033. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +0 -67
  1034. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +0 -101
  1035. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +0 -80
  1036. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +0 -64
  1037. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +0 -216
  1038. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +0 -64
  1039. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +0 -294
  1040. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +0 -406
  1041. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +0 -1254
  1042. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +0 -498
  1043. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +0 -154
  1044. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +0 -111
  1045. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +0 -130
  1046. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +0 -263
  1047. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +0 -235
  1048. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +0 -92
  1049. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +0 -296
  1050. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +0 -38
  1051. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +0 -101
  1052. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +0 -287
  1053. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +0 -50
  1054. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +0 -296
  1055. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +0 -93
  1056. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +0 -318
  1057. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +0 -259
  1058. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +0 -259
  1059. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +0 -492
  1060. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +0 -256
  1061. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +0 -459
  1062. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +0 -106
  1063. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +0 -113
  1064. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +0 -64
  1065. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +0 -116
  1066. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +0 -116
  1067. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +0 -114
  1068. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +0 -114
  1069. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +0 -110
  1070. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +0 -110
  1071. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +0 -110
  1072. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +0 -110
  1073. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +0 -110
  1074. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +0 -114
  1075. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +0 -114
  1076. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +0 -236
  1077. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +0 -236
  1078. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +0 -110
  1079. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +0 -110
  1080. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +0 -114
  1081. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +0 -114
  1082. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +0 -495
  1083. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +0 -462
  1084. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +0 -581
  1085. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +0 -563
  1086. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +0 -40
  1087. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +0 -41
  1088. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +0 -147
  1089. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +0 -39
  1090. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +0 -39
  1091. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +0 -201
  1092. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +0 -67
  1093. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +0 -57
  1094. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +0 -179
  1095. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +0 -228
  1096. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +0 -441
  1097. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +0 -345
  1098. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/is_same.hpp +0 -36
  1099. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/requires_cxx11.hpp +0 -22
  1100. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +0 -103
  1101. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_template.hpp +0 -1047
  1102. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +0 -130
  1103. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +0 -476
  1104. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +0 -71
  1105. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/requires_cxx11.hpp +0 -22
  1106. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_win32_sleep.hpp +0 -54
  1107. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1108. data/src/cxx_supportlib/vendor-modified/boost/function/detail/epilogue.hpp +0 -39
  1109. data/src/cxx_supportlib/vendor-modified/boost/function/detail/function_iterate.hpp +0 -16
  1110. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +0 -39
  1111. data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +0 -369
  1112. data/src/cxx_supportlib/vendor-modified/boost/function/detail/prologue.hpp +0 -27
  1113. data/src/cxx_supportlib/vendor-modified/boost/function/detail/requires_cxx11.hpp +0 -22
  1114. data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +0 -26
  1115. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +0 -6
  1116. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +0 -89
  1117. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +0 -124
  1118. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +0 -126
  1119. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +0 -89
  1120. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +0 -367
  1121. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +0 -1342
  1122. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +0 -30
  1123. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +0 -22
  1124. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +0 -19
  1125. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +0 -30
  1126. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +0 -30
  1127. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +0 -30
  1128. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +0 -30
  1129. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +0 -30
  1130. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +0 -30
  1131. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +0 -30
  1132. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +0 -30
  1133. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +0 -30
  1134. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +0 -30
  1135. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +0 -30
  1136. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +0 -31
  1137. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +0 -30
  1138. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +0 -25
  1139. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +0 -15
  1140. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +0 -30
  1141. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +0 -30
  1142. data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +0 -17
  1143. data/src/cxx_supportlib/vendor-modified/boost/system/detail/requires_cxx11.hpp +0 -21
  1144. data/src/cxx_supportlib/vendor-modified/boost/typeof/detail/requires_cxx11.hpp +0 -18
  1145. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +0 -100
  1146. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -58
  1147. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +0 -34
  1148. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +0 -118
  1149. data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +0 -80
  1150. data/src/cxx_supportlib/vendor-modified/boost/typeof/message.hpp +0 -8
  1151. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +0 -121
  1152. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +0 -60
  1153. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +0 -38
  1154. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +0 -50
  1155. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +0 -135
  1156. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +0 -61
  1157. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +0 -32
  1158. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +0 -160
  1159. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +0 -149
  1160. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +0 -27
  1161. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +0 -37
  1162. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +0 -187
  1163. data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +0 -29
  1164. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +0 -166
  1165. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +0 -321
  1166. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +0 -471
  1167. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +0 -621
  1168. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +0 -171
  1169. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +0 -150
  1170. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/requires_cxx11.hpp +0 -21
  1171. /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,56 +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
42
+ #include <utility>
43
+ #include <tuple> // std::forward_as_tuple
62
44
 
63
- #if BOOST_UNORDERED_CXX11_CONSTRUCTION
64
- #include <boost/mp11/list.hpp>
65
- #include <boost/mp11/algorithm.hpp>
66
- #endif
45
+ namespace boost {
46
+ namespace tuples {
47
+ struct null_type;
48
+ }
49
+ } // namespace boost
67
50
 
68
51
  // BOOST_UNORDERED_SUPPRESS_DEPRECATED
69
52
  //
@@ -98,6 +81,10 @@
98
81
 
99
82
  namespace boost {
100
83
  namespace unordered {
84
+
85
+ using std::piecewise_construct;
86
+ using std::piecewise_construct_t;
87
+
101
88
  namespace detail {
102
89
 
103
90
  template <typename Types> struct table;
@@ -119,37 +106,41 @@ namespace boost {
119
106
  template <class T> no_key(T const&) {}
120
107
  };
121
108
 
109
+ struct converting_key
110
+ {
111
+ };
112
+
122
113
  namespace func {
123
114
  template <class T> inline void ignore_unused_variable_warning(T const&)
124
115
  {
125
116
  }
126
- }
117
+ } // namespace func
127
118
 
128
119
  //////////////////////////////////////////////////////////////////////////
129
120
  // iterator SFINAE
130
121
 
131
122
  template <typename I>
132
- struct is_forward : boost::is_base_of<std::forward_iterator_tag,
123
+ struct is_forward : std::is_base_of<std::forward_iterator_tag,
133
124
  typename std::iterator_traits<I>::iterator_category>
134
125
  {
135
126
  };
136
127
 
137
128
  template <typename I, typename ReturnType>
138
129
  struct enable_if_forward
139
- : boost::enable_if_c<boost::unordered::detail::is_forward<I>::value,
140
- ReturnType>
130
+ : std::enable_if<boost::unordered::detail::is_forward<I>::value,
131
+ ReturnType>
141
132
  {
142
133
  };
143
134
 
144
135
  template <typename I, typename ReturnType>
145
136
  struct disable_if_forward
146
- : boost::disable_if_c<boost::unordered::detail::is_forward<I>::value,
147
- ReturnType>
137
+ : std::enable_if<!boost::unordered::detail::is_forward<I>::value,
138
+ ReturnType>
148
139
  {
149
140
  };
150
- }
151
- }
152
- }
141
+ } // namespace detail
142
+ } // namespace unordered
143
+ } // namespace boost
153
144
 
154
145
  namespace boost {
155
146
  namespace unordered {
@@ -167,7 +158,8 @@ namespace boost {
167
158
 
168
159
  template <class I>
169
160
  inline typename boost::unordered::detail::disable_if_forward<I,
170
- std::size_t>::type insert_size(I, I)
161
+ std::size_t>::type
162
+ insert_size(I, I)
171
163
  {
172
164
  return 1;
173
165
  }
@@ -191,7 +183,7 @@ namespace boost {
191
183
  {
192
184
  }
193
185
  compressed_base(T& x, move_tag)
194
- : empty_value<T>(boost::empty_init_t(), boost::move(x))
186
+ : empty_value<T>(boost::empty_init_t(), std::move(x))
195
187
  {
196
188
  }
197
189
 
@@ -209,8 +201,8 @@ namespace boost {
209
201
 
210
202
  template <typename T1, typename T2>
211
203
  struct compressed
212
- : private boost::unordered::detail::generate_base<T1, 1>::type,
213
- 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
214
206
  {
215
207
  typedef typename generate_base<T1, 1>::type base1;
216
208
  typedef typename generate_base<T2, 2>::type base2;
@@ -252,14 +244,14 @@ namespace boost {
252
244
 
253
245
  void move_assign(compressed& x)
254
246
  {
255
- first() = boost::move(x.first());
256
- second() = boost::move(x.second());
247
+ first() = std::move(x.first());
248
+ second() = std::move(x.second());
257
249
  }
258
250
 
259
251
  void swap(compressed& x)
260
252
  {
261
- boost::swap(first(), x.first());
262
- boost::swap(second(), x.second());
253
+ boost::core::invoke_swap(first(), x.first());
254
+ boost::core::invoke_swap(second(), x.second());
263
255
  }
264
256
 
265
257
  private:
@@ -296,37 +288,8 @@ namespace boost {
296
288
  //////////////////////////////////////////////////////////////////////////
297
289
  // Bits and pieces for implementing traits
298
290
 
299
- template <typename T>
300
- typename boost::add_lvalue_reference<T>::type make();
301
- struct choice9
302
- {
303
- typedef char (&type)[9];
304
- };
305
- struct choice8 : choice9
306
- {
307
- typedef char (&type)[8];
308
- };
309
- struct choice7 : choice8
310
- {
311
- typedef char (&type)[7];
312
- };
313
- struct choice6 : choice7
314
- {
315
- typedef char (&type)[6];
316
- };
317
- struct choice5 : choice6
318
- {
319
- typedef char (&type)[5];
320
- };
321
- struct choice4 : choice5
322
- {
323
- typedef char (&type)[4];
324
- };
325
- struct choice3 : choice4
326
- {
327
- typedef char (&type)[3];
328
- };
329
- struct choice2 : choice3
291
+ template <typename T> typename std::add_lvalue_reference<T>::type make();
292
+ struct choice2
330
293
  {
331
294
  typedef char (&type)[2];
332
295
  };
@@ -351,139 +314,9 @@ namespace boost {
351
314
  {
352
315
  template <typename T> convert_from_anything(T const&);
353
316
  };
354
- }
355
- }
356
- }
357
-
358
- ////////////////////////////////////////////////////////////////////////////
359
- // emplace_args
360
- //
361
- // Either forwarding variadic arguments, or storing the arguments in
362
- // emplace_args##n
363
-
364
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
365
-
366
- #define BOOST_UNORDERED_EMPLACE_TEMPLATE typename... Args
367
- #define BOOST_UNORDERED_EMPLACE_ARGS BOOST_FWD_REF(Args)... args
368
- #define BOOST_UNORDERED_EMPLACE_FORWARD boost::forward<Args>(args)...
369
-
370
- #else
371
-
372
- #define BOOST_UNORDERED_EMPLACE_TEMPLATE typename Args
373
- #define BOOST_UNORDERED_EMPLACE_ARGS Args const& args
374
- #define BOOST_UNORDERED_EMPLACE_FORWARD args
375
-
376
- #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
377
-
378
- #define BOOST_UNORDERED_EARGS_MEMBER(z, n, _) \
379
- typedef BOOST_FWD_REF(BOOST_PP_CAT(A, n)) BOOST_PP_CAT(Arg, n); \
380
- BOOST_PP_CAT(Arg, n) BOOST_PP_CAT(a, n);
381
-
382
- #else
383
-
384
- #define BOOST_UNORDERED_EARGS_MEMBER(z, n, _) \
385
- typedef typename boost::add_lvalue_reference<BOOST_PP_CAT(A, n)>::type \
386
- BOOST_PP_CAT(Arg, n); \
387
- BOOST_PP_CAT(Arg, n) BOOST_PP_CAT(a, n);
388
-
389
- #endif
390
-
391
- #define BOOST_UNORDERED_FWD_PARAM(z, n, a) \
392
- BOOST_FWD_REF(BOOST_PP_CAT(A, n)) BOOST_PP_CAT(a, n)
393
-
394
- #define BOOST_UNORDERED_CALL_FORWARD(z, i, a) \
395
- boost::forward<BOOST_PP_CAT(A, i)>(BOOST_PP_CAT(a, i))
396
-
397
- #define BOOST_UNORDERED_EARGS_INIT(z, n, _) \
398
- BOOST_PP_CAT(a, n)(BOOST_PP_CAT(b, n))
399
-
400
- #define BOOST_UNORDERED_EARGS(z, n, _) \
401
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
402
- struct BOOST_PP_CAT(emplace_args, n) \
403
- { \
404
- BOOST_PP_REPEAT_##z(n, BOOST_UNORDERED_EARGS_MEMBER, _) BOOST_PP_CAT( \
405
- emplace_args, n)(BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, Arg, b)) \
406
- : BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_EARGS_INIT, _) \
407
- { \
408
- } \
409
- }; \
410
- \
411
- template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
412
- inline BOOST_PP_CAT(emplace_args, n)<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> \
413
- create_emplace_args(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, b)) \
414
- { \
415
- BOOST_PP_CAT(emplace_args, n)<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> e( \
416
- BOOST_PP_ENUM_PARAMS_Z(z, n, b)); \
417
- return e; \
418
- }
419
-
420
- namespace boost {
421
- namespace unordered {
422
- namespace detail {
423
- template <typename A0> struct emplace_args1
424
- {
425
- BOOST_UNORDERED_EARGS_MEMBER(1, 0, _)
426
-
427
- explicit emplace_args1(Arg0 b0) : a0(b0) {}
428
- };
429
-
430
- template <typename A0>
431
- inline emplace_args1<A0> create_emplace_args(BOOST_FWD_REF(A0) b0)
432
- {
433
- emplace_args1<A0> e(b0);
434
- return e;
435
- }
436
-
437
- template <typename A0, typename A1> struct emplace_args2
438
- {
439
- BOOST_UNORDERED_EARGS_MEMBER(1, 0, _)
440
- BOOST_UNORDERED_EARGS_MEMBER(1, 1, _)
441
-
442
- emplace_args2(Arg0 b0, Arg1 b1) : a0(b0), a1(b1) {}
443
- };
444
-
445
- template <typename A0, typename A1>
446
- inline emplace_args2<A0, A1> create_emplace_args(
447
- BOOST_FWD_REF(A0) b0, BOOST_FWD_REF(A1) b1)
448
- {
449
- emplace_args2<A0, A1> e(b0, b1);
450
- return e;
451
- }
452
-
453
- template <typename A0, typename A1, typename A2> struct emplace_args3
454
- {
455
- BOOST_UNORDERED_EARGS_MEMBER(1, 0, _)
456
- BOOST_UNORDERED_EARGS_MEMBER(1, 1, _)
457
- BOOST_UNORDERED_EARGS_MEMBER(1, 2, _)
458
-
459
- emplace_args3(Arg0 b0, Arg1 b1, Arg2 b2) : a0(b0), a1(b1), a2(b2) {}
460
- };
461
-
462
- template <typename A0, typename A1, typename A2>
463
- inline emplace_args3<A0, A1, A2> create_emplace_args(
464
- BOOST_FWD_REF(A0) b0, BOOST_FWD_REF(A1) b1, BOOST_FWD_REF(A2) b2)
465
- {
466
- emplace_args3<A0, A1, A2> e(b0, b1, b2);
467
- return e;
468
- }
469
-
470
- BOOST_UNORDERED_EARGS(1, 4, _)
471
- BOOST_UNORDERED_EARGS(1, 5, _)
472
- BOOST_UNORDERED_EARGS(1, 6, _)
473
- BOOST_UNORDERED_EARGS(1, 7, _)
474
- BOOST_UNORDERED_EARGS(1, 8, _)
475
- BOOST_UNORDERED_EARGS(1, 9, _)
476
- BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
477
- BOOST_UNORDERED_EARGS, _)
478
- }
479
- }
480
- }
481
-
482
- #undef BOOST_UNORDERED_DEFINE_EMPLACE_ARGS
483
- #undef BOOST_UNORDERED_EARGS_MEMBER
484
- #undef BOOST_UNORDERED_EARGS_INIT
485
-
486
- #endif
317
+ } // namespace detail
318
+ } // namespace unordered
319
+ } // namespace boost
487
320
 
488
321
  ////////////////////////////////////////////////////////////////////////////////
489
322
  //
@@ -494,35 +327,8 @@ namespace boost {
494
327
  namespace unordered {
495
328
  namespace detail {
496
329
 
497
- ////////////////////////////////////////////////////////////////////////////
498
- // Integral_constrant, true_type, false_type
499
- //
500
- // Uses the standard versions if available.
501
-
502
- #if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
503
-
504
- using std::integral_constant;
505
- using std::true_type;
506
- using std::false_type;
507
-
508
- #else
509
-
510
- template <typename T, T Value> struct integral_constant
511
- {
512
- enum
513
- {
514
- value = Value
515
- };
516
- };
517
-
518
- typedef boost::unordered::detail::integral_constant<bool, true> true_type;
519
- typedef boost::unordered::detail::integral_constant<bool, false>
520
- false_type;
521
-
522
- #endif
523
-
524
- ////////////////////////////////////////////////////////////////////////////
525
- // Explicitly call a destructor
330
+ ////////////////////////////////////////////////////////////////////////////
331
+ // Explicitly call a destructor
526
332
 
527
333
  #if defined(BOOST_MSVC)
528
334
  #pragma warning(push)
@@ -531,7 +337,7 @@ namespace boost {
531
337
 
532
338
  namespace func {
533
339
  template <class T> inline void destroy(T* x) { x->~T(); }
534
- }
340
+ } // namespace func
535
341
 
536
342
  #if defined(BOOST_MSVC)
537
343
  #pragma warning(pop)
@@ -546,8 +352,7 @@ namespace boost {
546
352
  {
547
353
  typedef ValueType value_type;
548
354
 
549
- typename boost::aligned_storage<sizeof(value_type),
550
- boost::alignment_of<value_type>::value>::type data_;
355
+ opt_storage<value_type> data_;
551
356
 
552
357
  value_base() : data_() {}
553
358
 
@@ -571,8 +376,6 @@ namespace boost {
571
376
 
572
377
  template <typename T> class optional
573
378
  {
574
- BOOST_MOVABLE_BUT_NOT_COPYABLE(optional)
575
-
576
379
  boost::unordered::detail::value_base<T> value_;
577
380
  bool has_value_;
578
381
 
@@ -587,16 +390,19 @@ namespace boost {
587
390
  void move(optional<T>& x)
588
391
  {
589
392
  BOOST_ASSERT(!has_value_ && x.has_value_);
590
- new (value_.value_ptr()) T(boost::move(x.value_.value()));
393
+ new (value_.value_ptr()) T(std::move(x.value_.value()));
591
394
  boost::unordered::detail::func::destroy(x.value_.value_ptr());
592
395
  has_value_ = true;
593
396
  x.has_value_ = false;
594
397
  }
595
398
 
596
399
  public:
597
- optional() BOOST_NOEXCEPT : has_value_(false) {}
400
+ optional() noexcept : has_value_(false) {}
598
401
 
599
- 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)
600
406
  {
601
407
  if (x.has_value_) {
602
408
  move(x);
@@ -608,7 +414,7 @@ namespace boost {
608
414
  new (value_.value_ptr()) T(x);
609
415
  }
610
416
 
611
- optional& operator=(BOOST_RV_REF(optional<T>) x)
417
+ optional& operator=(optional<T>&& x)
612
418
  {
613
419
  destroy();
614
420
  if (x.has_value_) {
@@ -642,15 +448,15 @@ namespace boost {
642
448
  move(x);
643
449
  }
644
450
  } else if (has_value_) {
645
- boost::swap(value_.value(), x.value_.value());
451
+ boost::core::invoke_swap(value_.value(), x.value_.value());
646
452
  }
647
453
  }
648
454
 
649
455
  friend void swap(optional<T>& x, optional<T>& y) { x.swap(y); }
650
456
  };
651
- }
652
- }
653
- }
457
+ } // namespace detail
458
+ } // namespace unordered
459
+ } // namespace boost
654
460
 
655
461
  ////////////////////////////////////////////////////////////////////////////////
656
462
  //
@@ -670,209 +476,9 @@ namespace boost {
670
476
  struct rebind_wrap : boost::allocator_rebind<Alloc, T>
671
477
  {
672
478
  };
673
- }
674
- }
675
- }
676
-
677
- ////////////////////////////////////////////////////////////////////////////
678
- // Functions used to construct nodes. Emulates variadic construction,
679
- // piecewise construction etc.
680
-
681
- ////////////////////////////////////////////////////////////////////////////
682
- // construct_value
683
- //
684
- // Only use allocator_traits::construct, allocator_traits::destroy when full
685
- // C++11 support is available.
686
-
687
- #if BOOST_UNORDERED_CXX11_CONSTRUCTION
688
-
689
- #elif !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
690
-
691
- namespace boost {
692
- namespace unordered {
693
- namespace detail {
694
- namespace func {
695
- template <typename T, typename... Args>
696
- inline void construct_value(T* address, BOOST_FWD_REF(Args)... args)
697
- {
698
- new ((void*)address) T(boost::forward<Args>(args)...);
699
- }
700
- }
701
- }
702
- }
703
- }
704
-
705
- #else
706
-
707
- namespace boost {
708
- namespace unordered {
709
- namespace detail {
710
- namespace func {
711
- template <typename T> inline void construct_value(T* address)
712
- {
713
- new ((void*)address) T();
714
- }
715
-
716
- template <typename T, typename A0>
717
- inline void construct_value(T* address, BOOST_FWD_REF(A0) a0)
718
- {
719
- new ((void*)address) T(boost::forward<A0>(a0));
720
- }
721
- }
722
- }
723
- }
724
- }
725
-
726
- #endif
727
-
728
- ////////////////////////////////////////////////////////////////////////////
729
- // Construct from tuple
730
- //
731
- // Used to emulate piecewise construction.
732
-
733
- #define BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(z, n, namespace_) \
734
- template <typename Alloc, typename T, \
735
- BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
736
- void construct_from_tuple(Alloc&, T* ptr, \
737
- namespace_::tuple<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> const& x) \
738
- { \
739
- new ((void*)ptr) \
740
- T(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_GET_TUPLE_ARG, namespace_)); \
741
- }
742
-
743
- #define BOOST_UNORDERED_GET_TUPLE_ARG(z, n, namespace_) namespace_::get<n>(x)
744
-
745
- // construct_from_tuple for boost::tuple
746
- // The workaround for old Sun compilers comes later in the file.
747
-
748
- #if !BOOST_UNORDERED_SUN_WORKAROUNDS1
749
-
750
- namespace boost {
751
- namespace unordered {
752
- namespace detail {
753
- namespace func {
754
- template <typename Alloc, typename T>
755
- void construct_from_tuple(Alloc&, T* ptr, boost::tuple<>)
756
- {
757
- new ((void*)ptr) T();
758
- }
759
-
760
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost)
761
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 2, boost)
762
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 3, boost)
763
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 4, boost)
764
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 5, boost)
765
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 6, boost)
766
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 7, boost)
767
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 8, boost)
768
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 9, boost)
769
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 10, boost)
770
- }
771
- }
772
- }
773
- }
774
-
775
- #endif
776
-
777
- // construct_from_tuple for std::tuple
778
-
779
- #if !BOOST_UNORDERED_CXX11_CONSTRUCTION && BOOST_UNORDERED_TUPLE_ARGS
780
-
781
- namespace boost {
782
- namespace unordered {
783
- namespace detail {
784
- namespace func {
785
- template <typename Alloc, typename T>
786
- void construct_from_tuple(Alloc&, T* ptr, std::tuple<>)
787
- {
788
- new ((void*)ptr) T();
789
- }
790
-
791
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, std)
792
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 2, std)
793
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 3, std)
794
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 4, std)
795
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 5, std)
796
-
797
- #if BOOST_UNORDERED_TUPLE_ARGS >= 6
798
- BOOST_PP_REPEAT_FROM_TO(6, BOOST_PP_INC(BOOST_UNORDERED_TUPLE_ARGS),
799
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE, std)
800
- #endif
801
- }
802
- }
803
- }
804
- }
805
-
806
- #endif
807
-
808
- #undef BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE
809
- #undef BOOST_UNORDERED_GET_TUPLE_ARG
810
-
811
- // construct_from_tuple for boost::tuple on old versions of sunpro.
812
- //
813
- // Old versions of Sun C++ had problems with template overloads of
814
- // boost::tuple, so to fix it I added a distinct type for each length to
815
- // the overloads. That means there's no possible ambiguity between the
816
- // different overloads, so that the compiler doesn't get confused
817
-
818
- #if BOOST_UNORDERED_SUN_WORKAROUNDS1
819
-
820
- #define BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(z, n, namespace_) \
821
- template <typename Alloc, typename T, \
822
- BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
823
- void construct_from_tuple_impl(boost::unordered::detail::func::length<n>, \
824
- Alloc&, T* ptr, \
825
- namespace_::tuple<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> const& x) \
826
- { \
827
- new ((void*)ptr) \
828
- T(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_GET_TUPLE_ARG, namespace_)); \
829
- }
830
-
831
- #define BOOST_UNORDERED_GET_TUPLE_ARG(z, n, namespace_) namespace_::get<n>(x)
832
-
833
- namespace boost {
834
- namespace unordered {
835
- namespace detail {
836
- namespace func {
837
- template <int N> struct length
838
- {
839
- };
840
-
841
- template <typename Alloc, typename T>
842
- void construct_from_tuple_impl(
843
- boost::unordered::detail::func::length<0>, Alloc&, T* ptr,
844
- boost::tuple<>)
845
- {
846
- new ((void*)ptr) T();
847
- }
848
-
849
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost)
850
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 2, boost)
851
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 3, boost)
852
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 4, boost)
853
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 5, boost)
854
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 6, boost)
855
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 7, boost)
856
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 8, boost)
857
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 9, boost)
858
- BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 10, boost)
859
-
860
- template <typename Alloc, typename T, typename Tuple>
861
- void construct_from_tuple(Alloc& alloc, T* ptr, Tuple const& x)
862
- {
863
- construct_from_tuple_impl(boost::unordered::detail::func::length<
864
- boost::tuples::length<Tuple>::value>(),
865
- alloc, ptr, x);
866
- }
867
- }
868
- }
869
- }
870
- }
871
-
872
- #undef BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE
873
- #undef BOOST_UNORDERED_GET_TUPLE_ARG
874
-
875
- #endif
479
+ } // namespace detail
480
+ } // namespace unordered
481
+ } // namespace boost
876
482
 
877
483
  namespace boost {
878
484
  namespace unordered {
@@ -883,8 +489,7 @@ namespace boost {
883
489
 
884
490
  template <typename A0> struct use_piecewise
885
491
  {
886
- static choice1::type test(
887
- choice1, boost::unordered::piecewise_construct_t);
492
+ static choice1::type test(choice1, std::piecewise_construct_t);
888
493
 
889
494
  static choice2::type test(choice2, ...);
890
495
 
@@ -895,29 +500,24 @@ namespace boost {
895
500
  };
896
501
  };
897
502
 
898
- #if BOOST_UNORDERED_CXX11_CONSTRUCTION
899
-
900
503
  ////////////////////////////////////////////////////////////////////////
901
504
  // Construct from variadic parameters
902
505
 
903
506
  template <typename Alloc, typename T, typename... Args>
904
507
  inline void construct_from_args(
905
- Alloc& alloc, T* address, BOOST_FWD_REF(Args)... args)
508
+ Alloc& alloc, T* address, Args&&... args)
906
509
  {
907
510
  boost::allocator_construct(
908
- alloc, address, boost::forward<Args>(args)...);
511
+ alloc, address, std::forward<Args>(args)...);
909
512
  }
910
513
 
911
514
  // For backwards compatibility, implement a special case for
912
515
  // piecewise_construct with boost::tuple
913
516
 
914
- template <typename A0> struct detect_boost_tuple
517
+ template <typename A0> struct detect_std_tuple
915
518
  {
916
- template <typename T0, typename T1, typename T2, typename T3,
917
- typename T4, typename T5, typename T6, typename T7, typename T8,
918
- typename T9>
919
- static choice1::type test(choice1,
920
- 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&);
921
521
 
922
522
  static choice2::type test(choice2, ...);
923
523
 
@@ -930,25 +530,27 @@ namespace boost {
930
530
 
931
531
  // Special case for piecewise_construct
932
532
 
933
- template <class... Args, std::size_t... Is, class... TupleArgs>
533
+ template <template <class...> class Tuple, class... Args,
534
+ std::size_t... Is, class... TupleArgs>
934
535
  std::tuple<typename std::add_lvalue_reference<Args>::type...>
935
536
  to_std_tuple_impl(boost::mp11::mp_list<Args...>,
936
- boost::tuple<TupleArgs...>& tuple, boost::mp11::index_sequence<Is...>)
537
+ Tuple<TupleArgs...>& tuple, boost::mp11::index_sequence<Is...>)
937
538
  {
938
- (void) tuple;
539
+ (void)tuple;
540
+ using std::get;
939
541
  return std::tuple<typename std::add_lvalue_reference<Args>::type...>(
940
- boost::get<Is>(tuple)...);
542
+ get<Is>(tuple)...);
941
543
  }
942
544
 
943
545
  template <class T>
944
546
  using add_lvalue_reference_t =
945
547
  typename std::add_lvalue_reference<T>::type;
946
548
 
947
- template <class... Args>
549
+ template <template <class...> class Tuple, class... Args>
948
550
  boost::mp11::mp_transform<add_lvalue_reference_t,
949
551
  boost::mp11::mp_remove<std::tuple<Args...>,
950
552
  boost::tuples::null_type> >
951
- to_std_tuple(boost::tuple<Args...>& tuple)
553
+ to_std_tuple(Tuple<Args...>& tuple)
952
554
  {
953
555
  using list = boost::mp11::mp_remove<boost::mp11::mp_list<Args...>,
954
556
  boost::tuples::null_type>;
@@ -960,138 +562,20 @@ namespace boost {
960
562
 
961
563
  template <typename Alloc, typename A, typename B, typename A0,
962
564
  typename A1, typename A2>
963
- inline typename boost::enable_if_c<use_piecewise<A0>::value &&
964
- detect_boost_tuple<A1>::value &&
965
- 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,
966
568
  void>::type
967
- construct_from_args(Alloc& alloc, std::pair<A, B>* address,
968
- 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)
969
571
  {
970
572
  boost::allocator_construct(alloc, address, std::piecewise_construct,
971
573
  to_std_tuple(a1), to_std_tuple(a2));
972
574
  }
973
-
974
- #elif !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
975
-
976
- ////////////////////////////////////////////////////////////////////////
977
- // Construct from variadic parameters
978
-
979
- template <typename Alloc, typename T, typename... Args>
980
- inline void construct_from_args(
981
- Alloc&, T* address, BOOST_FWD_REF(Args)... args)
982
- {
983
- new ((void*)address) T(boost::forward<Args>(args)...);
984
- }
985
-
986
- // Special case for piecewise_construct
987
-
988
- template <typename Alloc, typename A, typename B, typename A0,
989
- typename A1, typename A2>
990
- inline typename enable_if<use_piecewise<A0>, void>::type
991
- construct_from_args(Alloc& alloc, std::pair<A, B>* address,
992
- BOOST_FWD_REF(A0), BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
993
- {
994
- boost::unordered::detail::func::construct_from_tuple(
995
- alloc, boost::addressof(address->first), boost::forward<A1>(a1));
996
- BOOST_TRY
997
- {
998
- boost::unordered::detail::func::construct_from_tuple(
999
- alloc, boost::addressof(address->second), boost::forward<A2>(a2));
1000
- }
1001
- BOOST_CATCH(...)
1002
- {
1003
- boost::unordered::detail::func::destroy(
1004
- boost::addressof(address->first));
1005
- BOOST_RETHROW
1006
- }
1007
- BOOST_CATCH_END
1008
- }
1009
-
1010
- #else // BOOST_NO_CXX11_VARIADIC_TEMPLATES
1011
-
1012
- ////////////////////////////////////////////////////////////////////////
1013
- // Construct from emplace_args
1014
-
1015
- // Explicitly write out first three overloads for the sake of sane
1016
- // error messages.
1017
-
1018
- template <typename Alloc, typename T, typename A0>
1019
- inline void construct_from_args(
1020
- Alloc&, T* address, emplace_args1<A0> const& args)
1021
- {
1022
- new ((void*)address) T(boost::forward<A0>(args.a0));
1023
- }
1024
-
1025
- template <typename Alloc, typename T, typename A0, typename A1>
1026
- inline void construct_from_args(
1027
- Alloc&, T* address, emplace_args2<A0, A1> const& args)
1028
- {
1029
- new ((void*)address)
1030
- T(boost::forward<A0>(args.a0), boost::forward<A1>(args.a1));
1031
- }
1032
-
1033
- template <typename Alloc, typename T, typename A0, typename A1,
1034
- typename A2>
1035
- inline void construct_from_args(
1036
- Alloc&, T* address, emplace_args3<A0, A1, A2> const& args)
1037
- {
1038
- new ((void*)address) T(boost::forward<A0>(args.a0),
1039
- boost::forward<A1>(args.a1), boost::forward<A2>(args.a2));
1040
- }
1041
-
1042
- // Use a macro for the rest.
1043
-
1044
- #define BOOST_UNORDERED_CONSTRUCT_IMPL(z, num_params, _) \
1045
- template <typename Alloc, typename T, \
1046
- BOOST_PP_ENUM_PARAMS_Z(z, num_params, typename A)> \
1047
- inline void construct_from_args(Alloc&, T* address, \
1048
- boost::unordered::detail::BOOST_PP_CAT(emplace_args, num_params) < \
1049
- BOOST_PP_ENUM_PARAMS_Z(z, num_params, A) > const& args) \
1050
- { \
1051
- new ((void*)address) \
1052
- T(BOOST_PP_ENUM_##z(num_params, BOOST_UNORDERED_CALL_FORWARD, args.a)); \
1053
- }
1054
-
1055
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 4, _)
1056
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 5, _)
1057
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 6, _)
1058
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 7, _)
1059
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 8, _)
1060
- BOOST_UNORDERED_CONSTRUCT_IMPL(1, 9, _)
1061
- BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
1062
- BOOST_UNORDERED_CONSTRUCT_IMPL, _)
1063
-
1064
- #undef BOOST_UNORDERED_CONSTRUCT_IMPL
1065
-
1066
- // Construct with piecewise_construct
1067
-
1068
- template <typename Alloc, typename A, typename B, typename A0,
1069
- typename A1, typename A2>
1070
- inline typename enable_if<use_piecewise<A0>, void>::type
1071
- construct_from_args(Alloc& alloc, std::pair<A, B>* address,
1072
- boost::unordered::detail::emplace_args3<A0, A1, A2> const& args)
1073
- {
1074
- boost::unordered::detail::func::construct_from_tuple(
1075
- alloc, boost::addressof(address->first), args.a1);
1076
- BOOST_TRY
1077
- {
1078
- boost::unordered::detail::func::construct_from_tuple(
1079
- alloc, boost::addressof(address->second), args.a2);
1080
- }
1081
- BOOST_CATCH(...)
1082
- {
1083
- boost::unordered::detail::func::destroy(
1084
- boost::addressof(address->first));
1085
- BOOST_RETHROW
1086
- }
1087
- BOOST_CATCH_END
1088
- }
1089
-
1090
- #endif // BOOST_NO_CXX11_VARIADIC_TEMPLATES
1091
- }
1092
- }
1093
- }
1094
- }
575
+ } // namespace func
576
+ } // namespace detail
577
+ } // namespace unordered
578
+ } // namespace boost
1095
579
 
1096
580
  namespace boost {
1097
581
  namespace unordered {
@@ -1180,9 +664,9 @@ namespace boost {
1180
664
  boost::allocator_deallocate(alloc_, node_, 1);
1181
665
  }
1182
666
  }
1183
- }
1184
- }
1185
- }
667
+ } // namespace detail
668
+ } // namespace unordered
669
+ } // namespace boost
1186
670
 
1187
671
  namespace boost {
1188
672
  namespace unordered {
@@ -1192,9 +676,9 @@ namespace boost {
1192
676
  // Some nicer construct_node functions, might try to
1193
677
  // improve implementation later.
1194
678
 
1195
- template <typename Alloc, BOOST_UNORDERED_EMPLACE_TEMPLATE>
679
+ template <typename Alloc, typename... Args>
1196
680
  inline typename boost::allocator_pointer<Alloc>::type
1197
- construct_node_from_args(Alloc& alloc, BOOST_UNORDERED_EMPLACE_ARGS)
681
+ construct_node_from_args(Alloc& alloc, Args&&... args)
1198
682
  {
1199
683
  typedef typename boost::allocator_value_type<Alloc>::type node;
1200
684
  typedef typename node::value_type value_type;
@@ -1206,13 +690,13 @@ namespace boost {
1206
690
  node_constructor<Alloc> a(alloc);
1207
691
  a.create_node();
1208
692
  construct_from_args(
1209
- val_alloc, a.node_->value_ptr(), BOOST_UNORDERED_EMPLACE_FORWARD);
693
+ val_alloc, a.node_->value_ptr(), std::forward<Args>(args)...);
1210
694
  return a.release();
1211
695
  }
1212
696
 
1213
697
  template <typename Alloc, typename U>
1214
698
  inline typename boost::allocator_pointer<Alloc>::type construct_node(
1215
- Alloc& alloc, BOOST_FWD_REF(U) x)
699
+ Alloc& alloc, U&& x)
1216
700
  {
1217
701
  node_constructor<Alloc> a(alloc);
1218
702
  a.create_node();
@@ -1225,15 +709,13 @@ namespace boost {
1225
709
  value_allocator val_alloc(alloc);
1226
710
 
1227
711
  boost::allocator_construct(
1228
- val_alloc, a.node_->value_ptr(), boost::forward<U>(x));
712
+ val_alloc, a.node_->value_ptr(), std::forward<U>(x));
1229
713
  return a.release();
1230
714
  }
1231
715
 
1232
- #if BOOST_UNORDERED_CXX11_CONSTRUCTION
1233
-
1234
716
  template <typename Alloc, typename Key>
1235
717
  inline typename boost::allocator_pointer<Alloc>::type
1236
- construct_node_pair(Alloc& alloc, BOOST_FWD_REF(Key) k)
718
+ construct_node_pair(Alloc& alloc, Key&& k)
1237
719
  {
1238
720
  node_constructor<Alloc> a(alloc);
1239
721
  a.create_node();
@@ -1245,17 +727,16 @@ namespace boost {
1245
727
 
1246
728
  value_allocator val_alloc(alloc);
1247
729
 
1248
- boost::allocator_construct(
1249
- val_alloc, a.node_->value_ptr(), std::piecewise_construct,
1250
- 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)),
1251
733
  std::forward_as_tuple());
1252
734
  return a.release();
1253
735
  }
1254
736
 
1255
737
  template <typename Alloc, typename Key, typename Mapped>
1256
738
  inline typename boost::allocator_pointer<Alloc>::type
1257
- construct_node_pair(
1258
- Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_FWD_REF(Mapped) m)
739
+ construct_node_pair(Alloc& alloc, Key&& k, Mapped&& m)
1259
740
  {
1260
741
  node_constructor<Alloc> a(alloc);
1261
742
  a.create_node();
@@ -1269,15 +750,14 @@ namespace boost {
1269
750
 
1270
751
  boost::allocator_construct(val_alloc, a.node_->value_ptr(),
1271
752
  std::piecewise_construct,
1272
- std::forward_as_tuple(boost::forward<Key>(k)),
1273
- 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)));
1274
755
  return a.release();
1275
756
  }
1276
757
 
1277
758
  template <typename Alloc, typename Key, typename... Args>
1278
759
  inline typename boost::allocator_pointer<Alloc>::type
1279
- construct_node_pair_from_args(
1280
- Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_FWD_REF(Args)... args)
760
+ construct_node_pair_from_args(Alloc& alloc, Key&& k, Args&&... args)
1281
761
  {
1282
762
  node_constructor<Alloc> a(alloc);
1283
763
  a.create_node();
@@ -1289,127 +769,31 @@ namespace boost {
1289
769
 
1290
770
  value_allocator val_alloc(alloc);
1291
771
 
1292
- #if !(BOOST_COMP_CLANG && BOOST_COMP_CLANG < BOOST_VERSION_NUMBER(3, 8, 0) && \
1293
- defined(BOOST_LIBSTDCXX11))
1294
- boost::allocator_construct(val_alloc, a.node_->value_ptr(),
1295
- std::piecewise_construct,
1296
- std::forward_as_tuple(boost::forward<Key>(k)),
1297
- std::forward_as_tuple(boost::forward<Args>(args)...));
1298
- #else
1299
- // It doesn't seem to be possible to construct a tuple with 3 variadic
1300
- // rvalue reference members when using older versions of clang with
1301
- // libstdc++, so just use std::make_tuple instead of
1302
- // std::forward_as_tuple.
1303
772
  boost::allocator_construct(val_alloc, a.node_->value_ptr(),
1304
773
  std::piecewise_construct,
1305
- std::forward_as_tuple(boost::forward<Key>(k)),
1306
- std::make_tuple(boost::forward<Args>(args)...));
1307
- #endif
1308
- return a.release();
1309
- }
1310
-
1311
- #else
774
+ std::forward_as_tuple(std::forward<Key>(k)),
775
+ std::forward_as_tuple(std::forward<Args>(args)...));
1312
776
 
1313
- template <typename Alloc, typename Key>
1314
- inline
1315
- typename boost::unordered::detail::allocator_traits<Alloc>::pointer
1316
- construct_node_pair(Alloc& alloc, BOOST_FWD_REF(Key) k)
1317
- {
1318
- node_constructor<Alloc> a(alloc);
1319
- a.create_node();
1320
- boost::unordered::detail::func::construct_value(
1321
- boost::addressof(a.node_->value_ptr()->first),
1322
- boost::forward<Key>(k));
1323
- BOOST_TRY
1324
- {
1325
- boost::unordered::detail::func::construct_value(
1326
- boost::addressof(a.node_->value_ptr()->second));
1327
- }
1328
- BOOST_CATCH(...)
1329
- {
1330
- boost::unordered::detail::func::destroy(
1331
- boost::addressof(a.node_->value_ptr()->first));
1332
- BOOST_RETHROW
1333
- }
1334
- BOOST_CATCH_END
1335
777
  return a.release();
1336
778
  }
1337
779
 
1338
- template <typename Alloc, typename Key, typename Mapped>
1339
- inline
1340
- typename boost::unordered::detail::allocator_traits<Alloc>::pointer
1341
- construct_node_pair(
1342
- Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_FWD_REF(Mapped) m)
1343
- {
1344
- node_constructor<Alloc> a(alloc);
1345
- a.create_node();
1346
- boost::unordered::detail::func::construct_value(
1347
- boost::addressof(a.node_->value_ptr()->first),
1348
- boost::forward<Key>(k));
1349
- BOOST_TRY
1350
- {
1351
- boost::unordered::detail::func::construct_value(
1352
- boost::addressof(a.node_->value_ptr()->second),
1353
- boost::forward<Mapped>(m));
1354
- }
1355
- BOOST_CATCH(...)
1356
- {
1357
- boost::unordered::detail::func::destroy(
1358
- boost::addressof(a.node_->value_ptr()->first));
1359
- BOOST_RETHROW
1360
- }
1361
- BOOST_CATCH_END
1362
- return a.release();
1363
- }
1364
-
1365
- template <typename Alloc, typename Key,
1366
- BOOST_UNORDERED_EMPLACE_TEMPLATE>
1367
- inline
1368
- typename boost::unordered::detail::allocator_traits<Alloc>::pointer
1369
- construct_node_pair_from_args(
1370
- Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_UNORDERED_EMPLACE_ARGS)
1371
- {
1372
- node_constructor<Alloc> a(alloc);
1373
- a.create_node();
1374
- boost::unordered::detail::func::construct_value(
1375
- boost::addressof(a.node_->value_ptr()->first),
1376
- boost::forward<Key>(k));
1377
- BOOST_TRY
1378
- {
1379
- boost::unordered::detail::func::construct_from_args(alloc,
1380
- boost::addressof(a.node_->value_ptr()->second),
1381
- BOOST_UNORDERED_EMPLACE_FORWARD);
1382
- }
1383
- BOOST_CATCH(...)
1384
- {
1385
- boost::unordered::detail::func::destroy(
1386
- boost::addressof(a.node_->value_ptr()->first));
1387
- BOOST_RETHROW
1388
- }
1389
- BOOST_CATCH_END
1390
- return a.release();
1391
- }
1392
-
1393
- #endif
1394
-
1395
780
  template <typename T, typename Alloc, typename Key>
1396
781
  inline typename boost::allocator_pointer<Alloc>::type
1397
- construct_node_from_key(T*, Alloc& alloc, BOOST_FWD_REF(Key) k)
782
+ construct_node_from_key(T*, Alloc& alloc, Key&& k)
1398
783
  {
1399
- return construct_node(alloc, boost::forward<Key>(k));
784
+ return construct_node(alloc, std::forward<Key>(k));
1400
785
  }
1401
786
 
1402
787
  template <typename T, typename V, typename Alloc, typename Key>
1403
788
  inline typename boost::allocator_pointer<Alloc>::type
1404
- construct_node_from_key(
1405
- std::pair<T const, V>*, Alloc& alloc, BOOST_FWD_REF(Key) k)
789
+ construct_node_from_key(std::pair<T const, V>*, Alloc& alloc, Key&& k)
1406
790
  {
1407
- return construct_node_pair(alloc, boost::forward<Key>(k));
791
+ return construct_node_pair(alloc, std::forward<Key>(k));
1408
792
  }
1409
793
  } // namespace func
1410
- }
1411
- }
1412
- }
794
+ } // namespace detail
795
+ } // namespace unordered
796
+ } // namespace boost
1413
797
 
1414
798
  #if defined(BOOST_MSVC)
1415
799
  #pragma warning(pop)
@@ -1435,38 +819,35 @@ namespace boost {
1435
819
  // in that region of storage. This warning is also generated in C++03
1436
820
  // which does not have `std::launder`. The compiler builtin is always
1437
821
  // available, regardless of the C++ standard used when compiling.
1438
- template <class T> T* launder(T* p) BOOST_NOEXCEPT
822
+ template <class T> T* launder(T* p) noexcept
1439
823
  {
1440
824
  return __builtin_launder(p);
1441
825
  }
1442
826
  #else
1443
- template <class T> T* launder(T* p) BOOST_NOEXCEPT { return p; }
827
+ template <class T> T* launder(T* p) noexcept { return p; }
1444
828
  #endif
1445
829
 
1446
830
  template <class H, class P> class functions
1447
831
  {
1448
832
  public:
1449
833
  static const bool nothrow_move_assignable =
1450
- boost::is_nothrow_move_assignable<H>::value &&
1451
- boost::is_nothrow_move_assignable<P>::value;
834
+ std::is_nothrow_move_assignable<H>::value &&
835
+ std::is_nothrow_move_assignable<P>::value;
1452
836
  static const bool nothrow_move_constructible =
1453
- boost::is_nothrow_move_constructible<H>::value &&
1454
- boost::is_nothrow_move_constructible<P>::value;
837
+ std::is_nothrow_move_constructible<H>::value &&
838
+ std::is_nothrow_move_constructible<P>::value;
1455
839
  static const bool nothrow_swappable =
1456
- boost::is_nothrow_swappable<H>::value &&
1457
- boost::is_nothrow_swappable<P>::value;
840
+ boost::unordered::detail::is_nothrow_swappable<H>::value &&
841
+ boost::unordered::detail::is_nothrow_swappable<P>::value;
1458
842
 
1459
843
  private:
1460
844
  functions& operator=(functions const&);
1461
845
 
1462
846
  typedef compressed<H, P> function_pair;
1463
847
 
1464
- typedef typename boost::aligned_storage<sizeof(function_pair),
1465
- boost::alignment_of<function_pair>::value>::type aligned_function;
1466
-
1467
848
  unsigned char current_; // 0/1 - Currently active functions
1468
849
  // +2 - Both constructed
1469
- aligned_function funcs_[2];
850
+ opt_storage<function_pair> funcs_[2];
1470
851
 
1471
852
  public:
1472
853
  functions(H const& hf, P const& eq) : current_(0)
@@ -1483,8 +864,7 @@ namespace boost {
1483
864
  : current_(0)
1484
865
  {
1485
866
  construct_functions(current_, bf.current_functions(),
1486
- boost::unordered::detail::integral_constant<bool,
1487
- nothrow_move_constructible>());
867
+ std::integral_constant<bool, nothrow_move_constructible>());
1488
868
  }
1489
869
 
1490
870
  ~functions()
@@ -1540,16 +920,15 @@ namespace boost {
1540
920
  new ((void*)&funcs_[which]) function_pair(hf, eq);
1541
921
  }
1542
922
 
1543
- void construct_functions(unsigned char which, function_pair const& f,
1544
- boost::unordered::detail::false_type =
1545
- boost::unordered::detail::false_type())
923
+ void construct_functions(
924
+ unsigned char which, function_pair const& f, std::false_type = {})
1546
925
  {
1547
926
  BOOST_ASSERT(!(which & 2));
1548
927
  new ((void*)&funcs_[which]) function_pair(f);
1549
928
  }
1550
929
 
1551
- void construct_functions(unsigned char which, function_pair& f,
1552
- boost::unordered::detail::true_type)
930
+ void construct_functions(
931
+ unsigned char which, function_pair& f, std::true_type)
1553
932
  {
1554
933
  BOOST_ASSERT(!(which & 2));
1555
934
  new ((void*)&funcs_[which])
@@ -1564,34 +943,6 @@ namespace boost {
1564
943
  }
1565
944
  };
1566
945
 
1567
- ////////////////////////////////////////////////////////////////////////////
1568
- // rvalue parameters when type can't be a BOOST_RV_REF(T) parameter
1569
- // e.g. for int
1570
-
1571
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
1572
- #define BOOST_UNORDERED_RV_REF(T) BOOST_RV_REF(T)
1573
- #else
1574
- struct please_ignore_this_overload
1575
- {
1576
- typedef please_ignore_this_overload type;
1577
- };
1578
-
1579
- template <typename T> struct rv_ref_impl
1580
- {
1581
- typedef BOOST_RV_REF(T) type;
1582
- };
1583
-
1584
- template <typename T>
1585
- struct rv_ref : boost::conditional<boost::is_class<T>::value,
1586
- boost::unordered::detail::rv_ref_impl<T>,
1587
- please_ignore_this_overload>::type
1588
- {
1589
- };
1590
-
1591
- #define BOOST_UNORDERED_RV_REF(T) \
1592
- typename boost::unordered::detail::rv_ref<T>::type
1593
- #endif
1594
-
1595
946
  #if defined(BOOST_MSVC)
1596
947
  #pragma warning(push)
1597
948
  #pragma warning(disable : 4127) // conditional expression is constant
@@ -1624,48 +975,48 @@ namespace boost {
1624
975
  typedef std::ptrdiff_t difference_type;
1625
976
  typedef std::forward_iterator_tag iterator_category;
1626
977
 
1627
- iterator() : p(), itb(){}
978
+ iterator() : p(), itb() {}
1628
979
 
1629
- reference operator*() const BOOST_NOEXCEPT { return dereference(); }
1630
- pointer operator->() const BOOST_NOEXCEPT
980
+ reference operator*() const noexcept { return dereference(); }
981
+ pointer operator->() const noexcept
1631
982
  {
1632
- pointer x = boost::addressof(p->value());
983
+ pointer x = std::addressof(p->value());
1633
984
  return x;
1634
985
  }
1635
986
 
1636
- iterator& operator++() BOOST_NOEXCEPT
987
+ iterator& operator++() noexcept
1637
988
  {
1638
989
  increment();
1639
990
  return *this;
1640
991
  }
1641
992
 
1642
- iterator operator++(int) BOOST_NOEXCEPT
993
+ iterator operator++(int) noexcept
1643
994
  {
1644
995
  iterator old = *this;
1645
996
  increment();
1646
997
  return old;
1647
998
  }
1648
999
 
1649
- bool operator==(iterator const& other) const BOOST_NOEXCEPT
1000
+ bool operator==(iterator const& other) const noexcept
1650
1001
  {
1651
1002
  return equal(other);
1652
1003
  }
1653
1004
 
1654
- bool operator!=(iterator const& other) const BOOST_NOEXCEPT
1005
+ bool operator!=(iterator const& other) const noexcept
1655
1006
  {
1656
1007
  return !equal(other);
1657
1008
  }
1658
1009
 
1659
1010
  bool operator==(
1660
1011
  boost::unordered::detail::iterator_detail::c_iterator<Node,
1661
- Bucket> const& other) const BOOST_NOEXCEPT
1012
+ Bucket> const& other) const noexcept
1662
1013
  {
1663
1014
  return equal(other);
1664
1015
  }
1665
1016
 
1666
1017
  bool operator!=(
1667
1018
  boost::unordered::detail::iterator_detail::c_iterator<Node,
1668
- Bucket> const& other) const BOOST_NOEXCEPT
1019
+ Bucket> const& other) const noexcept
1669
1020
  {
1670
1021
  return !equal(other);
1671
1022
  }
@@ -1682,27 +1033,43 @@ namespace boost {
1682
1033
 
1683
1034
  iterator(node_pointer p_, bucket_iterator itb_) : p(p_), itb(itb_) {}
1684
1035
 
1685
- value_type& dereference() const BOOST_NOEXCEPT { return p->value(); }
1036
+ value_type& dereference() const noexcept { return p->value(); }
1686
1037
 
1687
- bool equal(const iterator& x) const BOOST_NOEXCEPT
1688
- {
1689
- return (p == x.p);
1690
- }
1038
+ bool equal(const iterator& x) const noexcept { return (p == x.p); }
1691
1039
 
1692
1040
  bool equal(
1693
1041
  const boost::unordered::detail::iterator_detail::c_iterator<Node,
1694
- Bucket>& x) const BOOST_NOEXCEPT
1042
+ Bucket>& x) const noexcept
1695
1043
  {
1696
1044
  return (p == x.p);
1697
1045
  }
1698
1046
 
1699
- void increment() BOOST_NOEXCEPT
1047
+ void increment() noexcept
1700
1048
  {
1701
1049
  p = p->next;
1702
1050
  if (!p) {
1703
1051
  p = (++itb)->next;
1704
1052
  }
1705
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
+ }
1706
1073
  };
1707
1074
 
1708
1075
  template <class Node, class Bucket> class c_iterator
@@ -1715,49 +1082,49 @@ namespace boost {
1715
1082
  typedef std::ptrdiff_t difference_type;
1716
1083
  typedef std::forward_iterator_tag iterator_category;
1717
1084
 
1718
- c_iterator() : p(), itb(){}
1085
+ c_iterator() : p(), itb() {}
1719
1086
  c_iterator(iterator<Node, Bucket> it) : p(it.p), itb(it.itb) {}
1720
1087
 
1721
- reference operator*() const BOOST_NOEXCEPT { return dereference(); }
1722
- pointer operator->() const BOOST_NOEXCEPT
1088
+ reference operator*() const noexcept { return dereference(); }
1089
+ pointer operator->() const noexcept
1723
1090
  {
1724
- pointer x = boost::addressof(p->value());
1091
+ pointer x = std::addressof(p->value());
1725
1092
  return x;
1726
1093
  }
1727
1094
 
1728
- c_iterator& operator++() BOOST_NOEXCEPT
1095
+ c_iterator& operator++() noexcept
1729
1096
  {
1730
1097
  increment();
1731
1098
  return *this;
1732
1099
  }
1733
1100
 
1734
- c_iterator operator++(int) BOOST_NOEXCEPT
1101
+ c_iterator operator++(int) noexcept
1735
1102
  {
1736
1103
  c_iterator old = *this;
1737
1104
  increment();
1738
1105
  return old;
1739
1106
  }
1740
1107
 
1741
- bool operator==(c_iterator const& other) const BOOST_NOEXCEPT
1108
+ bool operator==(c_iterator const& other) const noexcept
1742
1109
  {
1743
1110
  return equal(other);
1744
1111
  }
1745
1112
 
1746
- bool operator!=(c_iterator const& other) const BOOST_NOEXCEPT
1113
+ bool operator!=(c_iterator const& other) const noexcept
1747
1114
  {
1748
1115
  return !equal(other);
1749
1116
  }
1750
1117
 
1751
1118
  bool operator==(
1752
1119
  boost::unordered::detail::iterator_detail::iterator<Node,
1753
- Bucket> const& other) const BOOST_NOEXCEPT
1120
+ Bucket> const& other) const noexcept
1754
1121
  {
1755
1122
  return equal(other);
1756
1123
  }
1757
1124
 
1758
1125
  bool operator!=(
1759
1126
  boost::unordered::detail::iterator_detail::iterator<Node,
1760
- Bucket> const& other) const BOOST_NOEXCEPT
1127
+ Bucket> const& other) const noexcept
1761
1128
  {
1762
1129
  return !equal(other);
1763
1130
  }
@@ -1776,23 +1143,36 @@ namespace boost {
1776
1143
  {
1777
1144
  }
1778
1145
 
1779
- value_type const& dereference() const BOOST_NOEXCEPT
1780
- {
1781
- return p->value();
1782
- }
1146
+ value_type const& dereference() const noexcept { return p->value(); }
1783
1147
 
1784
- bool equal(const c_iterator& x) const BOOST_NOEXCEPT
1785
- {
1786
- return (p == x.p);
1787
- }
1148
+ bool equal(const c_iterator& x) const noexcept { return (p == x.p); }
1788
1149
 
1789
- void increment() BOOST_NOEXCEPT
1150
+ void increment() noexcept
1790
1151
  {
1791
1152
  p = p->next;
1792
1153
  if (!p) {
1793
1154
  p = (++itb)->next;
1794
1155
  }
1795
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
+ }
1796
1176
  };
1797
1177
  } // namespace iterator_detail
1798
1178
 
@@ -1819,20 +1199,23 @@ namespace boost {
1819
1199
  functions;
1820
1200
 
1821
1201
  typedef typename Types::value_allocator value_allocator;
1822
- typedef typename boost::allocator_void_pointer<value_allocator>::type void_pointer;
1202
+ typedef typename boost::allocator_void_pointer<value_allocator>::type
1203
+ void_pointer;
1823
1204
  typedef node<value_type, void_pointer> node_type;
1824
1205
 
1825
1206
  typedef boost::unordered::detail::grouped_bucket_array<
1826
1207
  bucket<node_type, void_pointer>, value_allocator, prime_fmod_size<> >
1827
1208
  bucket_array_type;
1828
1209
 
1829
- typedef typename bucket_array_type::node_allocator_type
1830
- node_allocator_type;
1831
- 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;
1832
1214
 
1833
1215
  typedef boost::unordered::detail::node_constructor<node_allocator_type>
1834
1216
  node_constructor;
1835
- typedef boost::unordered::detail::node_tmp<node_allocator_type> node_tmp;
1217
+ typedef boost::unordered::detail::node_tmp<node_allocator_type>
1218
+ node_tmp;
1836
1219
 
1837
1220
  typedef typename bucket_array_type::bucket_type bucket_type;
1838
1221
 
@@ -1879,8 +1262,7 @@ namespace boost {
1879
1262
  }
1880
1263
  std::size_t c = 0;
1881
1264
  std::size_t const key_hash = this->hash(k);
1882
- bucket_iterator itb =
1883
- buckets_.at(buckets_.position(key_hash));
1265
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
1884
1266
 
1885
1267
  bool found = false;
1886
1268
 
@@ -1922,10 +1304,7 @@ namespace boost {
1922
1304
  return iterator(itb->next, itb);
1923
1305
  }
1924
1306
 
1925
- iterator end() const
1926
- {
1927
- return iterator();
1928
- }
1307
+ iterator end() const { return iterator(); }
1929
1308
 
1930
1309
  l_iterator begin(std::size_t bucket_index) const
1931
1310
  {
@@ -1987,14 +1366,14 @@ namespace boost {
1987
1366
  }
1988
1367
 
1989
1368
  table(std::size_t num_buckets, hasher const& hf, key_equal const& eq,
1990
- node_allocator_type const& a)
1369
+ value_allocator const& a)
1991
1370
  : functions(hf, eq), size_(0), mlf_(1.0f), max_load_(0),
1992
1371
  buckets_(num_buckets, a)
1993
1372
  {
1994
1373
  recalculate_max_load();
1995
1374
  }
1996
1375
 
1997
- table(table const& x, node_allocator_type const& a)
1376
+ table(table const& x, value_allocator const& a)
1998
1377
  : functions(x), size_(0), mlf_(x.mlf_), max_load_(0),
1999
1378
  buckets_(x.size_, a)
2000
1379
  {
@@ -2003,13 +1382,13 @@ namespace boost {
2003
1382
 
2004
1383
  table(table& x, boost::unordered::detail::move_tag m)
2005
1384
  : functions(x, m), size_(x.size_), mlf_(x.mlf_),
2006
- max_load_(x.max_load_), buckets_(boost::move(x.buckets_))
1385
+ max_load_(x.max_load_), buckets_(std::move(x.buckets_))
2007
1386
  {
2008
1387
  x.size_ = 0;
2009
1388
  x.max_load_ = 0;
2010
1389
  }
2011
1390
 
2012
- table(table& x, node_allocator_type const& a,
1391
+ table(table& x, value_allocator const& a,
2013
1392
  boost::unordered::detail::move_tag m)
2014
1393
  : functions(x, m), size_(0), mlf_(x.mlf_), max_load_(0),
2015
1394
  buckets_(x.bucket_count(), a)
@@ -2020,7 +1399,7 @@ namespace boost {
2020
1399
  ////////////////////////////////////////////////////////////////////////
2021
1400
  // Swap and Move
2022
1401
 
2023
- void swap_allocators(table& other, false_type)
1402
+ void swap_allocators(table& other, std::false_type)
2024
1403
  {
2025
1404
  boost::unordered::detail::func::ignore_unused_variable_warning(other);
2026
1405
 
@@ -2031,7 +1410,7 @@ namespace boost {
2031
1410
  }
2032
1411
 
2033
1412
  // Not nothrow swappable
2034
- void swap(table& x, false_type)
1413
+ void swap(table& x, std::false_type)
2035
1414
  {
2036
1415
  if (this == &x) {
2037
1416
  return;
@@ -2049,16 +1428,16 @@ namespace boost {
2049
1428
  x.switch_functions();
2050
1429
 
2051
1430
  buckets_.swap(x.buckets_);
2052
- boost::swap(size_, x.size_);
1431
+ boost::core::invoke_swap(size_, x.size_);
2053
1432
  std::swap(mlf_, x.mlf_);
2054
1433
  std::swap(max_load_, x.max_load_);
2055
1434
  }
2056
1435
 
2057
1436
  // Nothrow swappable
2058
- void swap(table& x, true_type)
1437
+ void swap(table& x, std::true_type)
2059
1438
  {
2060
1439
  buckets_.swap(x.buckets_);
2061
- boost::swap(size_, x.size_);
1440
+ boost::core::invoke_swap(size_, x.size_);
2062
1441
  std::swap(mlf_, x.mlf_);
2063
1442
  std::swap(max_load_, x.max_load_);
2064
1443
  this->current_functions().swap(x.current_functions());
@@ -2072,8 +1451,7 @@ namespace boost {
2072
1451
  BOOST_ASSERT(boost::allocator_propagate_on_container_swap<
2073
1452
  node_allocator_type>::type::value ||
2074
1453
  node_alloc() == x.node_alloc());
2075
- swap(x, boost::unordered::detail::integral_constant<bool,
2076
- functions::nothrow_swappable>());
1454
+ swap(x, std::integral_constant<bool, functions::nothrow_swappable>());
2077
1455
  }
2078
1456
 
2079
1457
  // Only call with nodes allocated with the currect allocator, or
@@ -2081,7 +1459,7 @@ namespace boost {
2081
1459
  // allocators might have already been moved).
2082
1460
  void move_buckets_from(table& other)
2083
1461
  {
2084
- buckets_ = boost::move(other.buckets_);
1462
+ buckets_ = std::move(other.buckets_);
2085
1463
 
2086
1464
  size_ = other.size_;
2087
1465
  max_load_ = other.max_load_;
@@ -2102,20 +1480,18 @@ namespace boost {
2102
1480
  return;
2103
1481
  }
2104
1482
 
2105
- BOOST_ASSERT(
2106
- buckets_.bucket_count() == src.buckets_.bucket_count());
1483
+ BOOST_ASSERT(buckets_.bucket_count() == src.buckets_.bucket_count());
2107
1484
 
2108
1485
  this->reserve(src.size_);
2109
1486
  for (iterator pos = src.begin(); pos != src.end(); ++pos) {
2110
1487
  node_tmp b(detail::func::construct_node(
2111
- this->node_alloc(), boost::move(pos.p->value())),
1488
+ this->node_alloc(), std::move(pos.p->value())),
2112
1489
  this->node_alloc());
2113
1490
 
2114
1491
  const_key_type& k = this->get_key(b.node_);
2115
1492
  std::size_t key_hash = this->hash(k);
2116
1493
 
2117
- bucket_iterator itb =
2118
- buckets_.at(buckets_.position(key_hash));
1494
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2119
1495
  buckets_.insert_node(itb, b.release());
2120
1496
  ++size_;
2121
1497
  }
@@ -2132,6 +1508,7 @@ namespace boost {
2132
1508
 
2133
1509
  value_allocator val_alloc(alloc);
2134
1510
  boost::allocator_destroy(val_alloc, p->value_ptr());
1511
+ boost::unordered::detail::func::destroy(boost::to_address(p));
2135
1512
  boost::allocator_deallocate(alloc, p, 1);
2136
1513
  }
2137
1514
 
@@ -2161,17 +1538,17 @@ namespace boost {
2161
1538
  template <typename UniqueType>
2162
1539
  void assign(table const& x, UniqueType is_unique)
2163
1540
  {
2164
- 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;
2165
1544
 
2166
1545
  if (this != &x) {
2167
- assign(x, is_unique,
2168
- boost::unordered::detail::integral_constant<bool,
2169
- pocca::value>());
1546
+ assign(x, is_unique, std::integral_constant<bool, pocca::value>());
2170
1547
  }
2171
1548
  }
2172
1549
 
2173
1550
  template <typename UniqueType>
2174
- void assign(table const &x, UniqueType is_unique, false_type)
1551
+ void assign(table const& x, UniqueType is_unique, std::false_type)
2175
1552
  {
2176
1553
  // Strong exception safety.
2177
1554
  this->construct_spare_functions(x.current_functions());
@@ -2194,15 +1571,12 @@ namespace boost {
2194
1571
  }
2195
1572
 
2196
1573
  template <typename UniqueType>
2197
- void assign(table const &x, UniqueType is_unique, true_type)
1574
+ void assign(table const& x, UniqueType is_unique, std::true_type)
2198
1575
  {
2199
- if (node_alloc() == x.node_alloc())
2200
- {
1576
+ if (node_alloc() == x.node_alloc()) {
2201
1577
  buckets_.reset_allocator(x.node_alloc());
2202
- assign(x, is_unique, false_type());
2203
- }
2204
- else
2205
- {
1578
+ assign(x, is_unique, std::false_type());
1579
+ } else {
2206
1580
  bucket_array_type new_buckets(x.size_, x.node_alloc());
2207
1581
  this->construct_spare_functions(x.current_functions());
2208
1582
  this->switch_functions();
@@ -2211,15 +1585,14 @@ namespace boost {
2211
1585
  // the new ones.
2212
1586
  delete_buckets();
2213
1587
  buckets_.reset_allocator(x.node_alloc());
2214
- buckets_ = boost::move(new_buckets);
1588
+ buckets_ = std::move(new_buckets);
2215
1589
 
2216
1590
  // Copy over other data, all no throw.
2217
1591
  mlf_ = x.mlf_;
2218
1592
  reserve(x.size_);
2219
1593
 
2220
1594
  // Finally copy the elements.
2221
- if (x.size_)
2222
- {
1595
+ if (x.size_) {
2223
1596
  copy_buckets(x, is_unique);
2224
1597
  }
2225
1598
  }
@@ -2230,7 +1603,7 @@ namespace boost {
2230
1603
  {
2231
1604
  if (this != &x) {
2232
1605
  move_assign(x, is_unique,
2233
- boost::unordered::detail::integral_constant<bool,
1606
+ std::integral_constant<bool,
2234
1607
  boost::allocator_propagate_on_container_move_assignment<
2235
1608
  node_allocator_type>::type::value>());
2236
1609
  }
@@ -2238,7 +1611,7 @@ namespace boost {
2238
1611
 
2239
1612
  // Propagate allocator
2240
1613
  template <typename UniqueType>
2241
- void move_assign(table& x, UniqueType, true_type)
1614
+ void move_assign(table& x, UniqueType, std::true_type)
2242
1615
  {
2243
1616
  if (!functions::nothrow_move_assignable) {
2244
1617
  this->construct_spare_functions(x.current_functions());
@@ -2255,7 +1628,7 @@ namespace boost {
2255
1628
 
2256
1629
  // Don't propagate allocator
2257
1630
  template <typename UniqueType>
2258
- void move_assign(table& x, UniqueType is_unique, false_type)
1631
+ void move_assign(table& x, UniqueType is_unique, std::false_type)
2259
1632
  {
2260
1633
  if (node_alloc() == x.node_alloc()) {
2261
1634
  move_assign_equal_alloc(x);
@@ -2307,8 +1680,7 @@ namespace boost {
2307
1680
  return extractor::extract(n->value());
2308
1681
  }
2309
1682
 
2310
- template <class Key>
2311
- std::size_t hash(Key const& k) const
1683
+ template <class Key> std::size_t hash(Key const& k) const
2312
1684
  {
2313
1685
  return this->hash_function()(k);
2314
1686
  }
@@ -2316,8 +1688,7 @@ namespace boost {
2316
1688
  // Find Node
2317
1689
 
2318
1690
  template <class Key>
2319
- node_pointer find_node_impl(
2320
- Key const& x, bucket_iterator itb) const
1691
+ node_pointer find_node_impl(Key const& x, bucket_iterator itb) const
2321
1692
  {
2322
1693
  node_pointer p = node_pointer();
2323
1694
  if (itb != buckets_.end()) {
@@ -2335,12 +1706,10 @@ namespace boost {
2335
1706
  template <class Key> node_pointer find_node(Key const& k) const
2336
1707
  {
2337
1708
  std::size_t const key_hash = this->hash(k);
2338
- return find_node_impl(
2339
- k, buckets_.at(buckets_.position(key_hash)));
1709
+ return find_node_impl(k, buckets_.at(buckets_.position(key_hash)));
2340
1710
  }
2341
1711
 
2342
- node_pointer find_node(
2343
- const_key_type& k, bucket_iterator itb) const
1712
+ node_pointer find_node(const_key_type& k, bucket_iterator itb) const
2344
1713
  {
2345
1714
  return find_node_impl(k, itb);
2346
1715
  }
@@ -2373,8 +1742,8 @@ namespace boost {
2373
1742
  {
2374
1743
  if (size_ > 0) {
2375
1744
  key_equal pred = this->key_eq();
2376
- for (node_pointer* pp = boost::addressof(itb->next); *pp;
2377
- pp = boost::addressof((*pp)->next)) {
1745
+ for (node_pointer* pp = std::addressof(itb->next); *pp;
1746
+ pp = std::addressof((*pp)->next)) {
2378
1747
  if (pred(key, extractor::extract((*pp)->value()))) {
2379
1748
  return pp;
2380
1749
  }
@@ -2452,31 +1821,29 @@ namespace boost {
2452
1821
 
2453
1822
  // Emplace/Insert
2454
1823
 
2455
- template <BOOST_UNORDERED_EMPLACE_TEMPLATE>
1824
+ template <typename... Args>
2456
1825
  iterator emplace_hint_unique(
2457
- c_iterator hint, const_key_type& k, BOOST_UNORDERED_EMPLACE_ARGS)
1826
+ c_iterator hint, const_key_type& k, Args&&... args)
2458
1827
  {
2459
1828
  if (hint.p && this->key_eq()(k, this->get_key(hint.p))) {
2460
1829
  return iterator(hint.p, hint.itb);
2461
1830
  } else {
2462
- return emplace_unique(k, BOOST_UNORDERED_EMPLACE_FORWARD).first;
1831
+ return emplace_unique(k, std::forward<Args>(args)...).first;
2463
1832
  }
2464
1833
  }
2465
1834
 
2466
- template <BOOST_UNORDERED_EMPLACE_TEMPLATE>
2467
- emplace_return emplace_unique(
2468
- const_key_type& k, BOOST_UNORDERED_EMPLACE_ARGS)
1835
+ template <typename... Args>
1836
+ emplace_return emplace_unique(const_key_type& k, Args&&... args)
2469
1837
  {
2470
1838
  std::size_t key_hash = this->hash(k);
2471
- bucket_iterator itb =
2472
- buckets_.at(buckets_.position(key_hash));
1839
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2473
1840
  node_pointer pos = this->find_node_impl(k, itb);
2474
1841
 
2475
1842
  if (pos) {
2476
1843
  return emplace_return(iterator(pos, itb), false);
2477
1844
  } else {
2478
1845
  node_tmp b(boost::unordered::detail::func::construct_node_from_args(
2479
- this->node_alloc(), BOOST_UNORDERED_EMPLACE_FORWARD),
1846
+ this->node_alloc(), std::forward<Args>(args)...),
2480
1847
  this->node_alloc());
2481
1848
 
2482
1849
  if (size_ + 1 > max_load_) {
@@ -2492,12 +1859,11 @@ namespace boost {
2492
1859
  }
2493
1860
  }
2494
1861
 
2495
- template <BOOST_UNORDERED_EMPLACE_TEMPLATE>
2496
- iterator emplace_hint_unique(
2497
- 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)
2498
1864
  {
2499
1865
  node_tmp b(boost::unordered::detail::func::construct_node_from_args(
2500
- this->node_alloc(), BOOST_UNORDERED_EMPLACE_FORWARD),
1866
+ this->node_alloc(), std::forward<Args>(args)...),
2501
1867
  this->node_alloc());
2502
1868
 
2503
1869
  const_key_type& k = this->get_key(b.node_);
@@ -2506,8 +1872,7 @@ namespace boost {
2506
1872
  }
2507
1873
 
2508
1874
  std::size_t const key_hash = this->hash(k);
2509
- bucket_iterator itb =
2510
- buckets_.at(buckets_.position(key_hash));
1875
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2511
1876
 
2512
1877
  node_pointer p = this->find_node_impl(k, itb);
2513
1878
  if (p) {
@@ -2525,18 +1890,17 @@ namespace boost {
2525
1890
  return iterator(p, itb);
2526
1891
  }
2527
1892
 
2528
- template <BOOST_UNORDERED_EMPLACE_TEMPLATE>
2529
- emplace_return emplace_unique(no_key, BOOST_UNORDERED_EMPLACE_ARGS)
1893
+ template <typename... Args>
1894
+ emplace_return emplace_unique(no_key, Args&&... args)
2530
1895
  {
2531
1896
  node_tmp b(boost::unordered::detail::func::construct_node_from_args(
2532
- this->node_alloc(), BOOST_UNORDERED_EMPLACE_FORWARD),
1897
+ this->node_alloc(), std::forward<Args>(args)...),
2533
1898
  this->node_alloc());
2534
1899
 
2535
1900
  const_key_type& k = this->get_key(b.node_);
2536
1901
  std::size_t key_hash = this->hash(k);
2537
1902
 
2538
- bucket_iterator itb =
2539
- buckets_.at(buckets_.position(key_hash));
1903
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2540
1904
  node_pointer pos = this->find_node_impl(k, itb);
2541
1905
 
2542
1906
  if (pos) {
@@ -2555,12 +1919,20 @@ namespace boost {
2555
1919
  }
2556
1920
  }
2557
1921
 
2558
- template <typename Key>
2559
- 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)
2560
1933
  {
2561
1934
  std::size_t key_hash = this->hash(k);
2562
- bucket_iterator itb =
2563
- buckets_.at(buckets_.position(key_hash));
1935
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2564
1936
 
2565
1937
  node_pointer pos = this->find_node_impl(k, itb);
2566
1938
 
@@ -2572,7 +1944,7 @@ namespace boost {
2572
1944
  value_type* dispatch = BOOST_NULLPTR;
2573
1945
 
2574
1946
  node_tmp tmp(detail::func::construct_node_from_key(
2575
- dispatch, alloc, boost::forward<Key>(k)),
1947
+ dispatch, alloc, std::forward<Key>(k)),
2576
1948
  alloc);
2577
1949
 
2578
1950
  if (size_ + 1 > max_load_) {
@@ -2589,7 +1961,7 @@ namespace boost {
2589
1961
  }
2590
1962
 
2591
1963
  template <typename Key>
2592
- iterator try_emplace_hint_unique(c_iterator hint, BOOST_FWD_REF(Key) k)
1964
+ iterator try_emplace_hint_unique(c_iterator hint, Key&& k)
2593
1965
  {
2594
1966
  if (hint.p && this->key_eq()(extractor::extract(*hint), k)) {
2595
1967
  return iterator(hint.p, hint.itb);
@@ -2598,13 +1970,11 @@ namespace boost {
2598
1970
  }
2599
1971
  }
2600
1972
 
2601
- template <typename Key, BOOST_UNORDERED_EMPLACE_TEMPLATE>
2602
- emplace_return try_emplace_unique(
2603
- 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)
2604
1975
  {
2605
1976
  std::size_t key_hash = this->hash(k);
2606
- bucket_iterator itb =
2607
- buckets_.at(buckets_.position(key_hash));
1977
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2608
1978
 
2609
1979
  node_pointer pos = this->find_node_impl(k, itb);
2610
1980
 
@@ -2614,7 +1984,7 @@ namespace boost {
2614
1984
 
2615
1985
  node_tmp b(
2616
1986
  boost::unordered::detail::func::construct_node_pair_from_args(
2617
- this->node_alloc(), k, BOOST_UNORDERED_EMPLACE_FORWARD),
1987
+ this->node_alloc(), k, std::forward<Args>(args)...),
2618
1988
  this->node_alloc());
2619
1989
 
2620
1990
  if (size_ + 1 > max_load_) {
@@ -2629,34 +1999,32 @@ namespace boost {
2629
1999
  return emplace_return(iterator(pos, itb), true);
2630
2000
  }
2631
2001
 
2632
- template <typename Key, BOOST_UNORDERED_EMPLACE_TEMPLATE>
2002
+ template <typename Key, typename... Args>
2633
2003
  iterator try_emplace_hint_unique(
2634
- c_iterator hint, BOOST_FWD_REF(Key) k, BOOST_UNORDERED_EMPLACE_ARGS)
2004
+ c_iterator hint, Key&& k, Args&&... args)
2635
2005
  {
2636
2006
  if (hint.p && this->key_eq()(hint->first, k)) {
2637
2007
  return iterator(hint.p, hint.itb);
2638
2008
  } else {
2639
- return try_emplace_unique(k, BOOST_UNORDERED_EMPLACE_FORWARD).first;
2009
+ return try_emplace_unique(k, std::forward<Args>(args)...).first;
2640
2010
  }
2641
2011
  }
2642
2012
 
2643
2013
  template <typename Key, typename M>
2644
- emplace_return insert_or_assign_unique(
2645
- BOOST_FWD_REF(Key) k, BOOST_FWD_REF(M) obj)
2014
+ emplace_return insert_or_assign_unique(Key&& k, M&& obj)
2646
2015
  {
2647
2016
  std::size_t key_hash = this->hash(k);
2648
- bucket_iterator itb =
2649
- buckets_.at(buckets_.position(key_hash));
2017
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2650
2018
 
2651
2019
  node_pointer p = this->find_node_impl(k, itb);
2652
2020
  if (p) {
2653
- p->value().second = boost::forward<M>(obj);
2021
+ p->value().second = std::forward<M>(obj);
2654
2022
  return emplace_return(iterator(p, itb), false);
2655
2023
  }
2656
2024
 
2657
- node_tmp b(boost::unordered::detail::func::construct_node_pair(
2658
- this->node_alloc(), boost::forward<Key>(k),
2659
- 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)),
2660
2028
  node_alloc());
2661
2029
 
2662
2030
  if (size_ + 1 > max_load_) {
@@ -2683,13 +2051,12 @@ namespace boost {
2683
2051
 
2684
2052
  const_key_type& k = this->get_key(np.ptr_);
2685
2053
  std::size_t const key_hash = this->hash(k);
2686
- bucket_iterator itb =
2687
- buckets_.at(buckets_.position(key_hash));
2054
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2688
2055
  node_pointer p = this->find_node_impl(k, itb);
2689
2056
 
2690
2057
  if (p) {
2691
2058
  iterator pos(p, itb);
2692
- result.node = boost::move(np);
2059
+ result.node = std::move(np);
2693
2060
  result.position = pos;
2694
2061
  result.inserted = false;
2695
2062
  return;
@@ -2722,8 +2089,7 @@ namespace boost {
2722
2089
  }
2723
2090
 
2724
2091
  std::size_t const key_hash = this->hash(k);
2725
- bucket_iterator itb =
2726
- buckets_.at(buckets_.position(key_hash));
2092
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2727
2093
  node_pointer p = this->find_node_impl(k, itb);
2728
2094
  if (p) {
2729
2095
  return iterator(p, itb);
@@ -2746,8 +2112,8 @@ namespace boost {
2746
2112
  void merge_unique(boost::unordered::detail::table<Types2>& other)
2747
2113
  {
2748
2114
  typedef boost::unordered::detail::table<Types2> other_table;
2749
- BOOST_STATIC_ASSERT((boost::is_same<node_type,
2750
- typename other_table::node_type>::value));
2115
+ BOOST_UNORDERED_STATIC_ASSERT(
2116
+ (std::is_same<node_type, typename other_table::node_type>::value));
2751
2117
  BOOST_ASSERT(this->node_alloc() == other.node_alloc());
2752
2118
 
2753
2119
  if (other.size_ == 0) {
@@ -2761,8 +2127,7 @@ namespace boost {
2761
2127
  const_key_type& key = other.get_key(pos.p);
2762
2128
  std::size_t const key_hash = this->hash(key);
2763
2129
 
2764
- bucket_iterator itb =
2765
- buckets_.at(buckets_.position(key_hash));
2130
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2766
2131
 
2767
2132
  if (this->find_node_impl(key, itb)) {
2768
2133
  ++pos;
@@ -2847,14 +2212,15 @@ namespace boost {
2847
2212
  return 1;
2848
2213
  }
2849
2214
 
2850
- iterator erase_node(c_iterator pos) {
2215
+ iterator erase_node(c_iterator pos)
2216
+ {
2851
2217
  c_iterator next = pos;
2852
2218
  ++next;
2853
-
2219
+
2854
2220
  bucket_iterator itb = pos.itb;
2855
- node_pointer* pp = boost::addressof(itb->next);
2221
+ node_pointer* pp = std::addressof(itb->next);
2856
2222
  while (*pp != pos.p) {
2857
- pp = boost::addressof((*pp)->next);
2223
+ pp = std::addressof((*pp)->next);
2858
2224
  }
2859
2225
 
2860
2226
  buckets_.extract_node_after(itb, pp);
@@ -2875,9 +2241,9 @@ namespace boost {
2875
2241
  // each bucket group so we have to retrieve it manually by iterating
2876
2242
  //
2877
2243
  bucket_iterator itb = first.itb;
2878
- node_pointer* pp = boost::addressof(itb->next);
2244
+ node_pointer* pp = std::addressof(itb->next);
2879
2245
  while (*pp != first.p) {
2880
- pp = boost::addressof((*pp)->next);
2246
+ pp = std::addressof((*pp)->next);
2881
2247
  }
2882
2248
 
2883
2249
  while (*pp != last.p) {
@@ -2887,7 +2253,6 @@ namespace boost {
2887
2253
  this->delete_node(p);
2888
2254
  --size_;
2889
2255
 
2890
-
2891
2256
  bool const at_end = !(*pp);
2892
2257
  bool const is_empty_bucket = !itb->next;
2893
2258
 
@@ -2897,7 +2262,7 @@ namespace boost {
2897
2262
  } else {
2898
2263
  ++itb;
2899
2264
  }
2900
- pp = boost::addressof(itb->next);
2265
+ pp = std::addressof(itb->next);
2901
2266
  }
2902
2267
  }
2903
2268
 
@@ -2907,7 +2272,7 @@ namespace boost {
2907
2272
  ////////////////////////////////////////////////////////////////////////
2908
2273
  // fill_buckets_unique
2909
2274
 
2910
- void copy_buckets(table const& src, true_type)
2275
+ void copy_buckets(table const& src, std::true_type)
2911
2276
  {
2912
2277
  BOOST_ASSERT(size_ == 0);
2913
2278
 
@@ -2928,7 +2293,7 @@ namespace boost {
2928
2293
  }
2929
2294
  }
2930
2295
 
2931
- void move_assign_buckets(table& src, true_type)
2296
+ void move_assign_buckets(table& src, std::true_type)
2932
2297
  {
2933
2298
  BOOST_ASSERT(size_ == 0);
2934
2299
  BOOST_ASSERT(max_load_ >= src.size_);
@@ -2937,14 +2302,14 @@ namespace boost {
2937
2302
  node_allocator_type alloc = this->node_alloc();
2938
2303
 
2939
2304
  for (iterator pos = src.begin(); pos != last; ++pos) {
2940
- value_type value = boost::move(*pos);
2305
+ value_type value = std::move(*pos);
2941
2306
  const_key_type& key = extractor::extract(value);
2942
2307
  std::size_t const key_hash = this->hash(key);
2943
2308
 
2944
2309
  bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
2945
2310
 
2946
2311
  node_tmp tmp(
2947
- detail::func::construct_node(alloc, boost::move(value)), alloc);
2312
+ detail::func::construct_node(alloc, std::move(value)), alloc);
2948
2313
 
2949
2314
  buckets_.insert_node(itb, tmp.release());
2950
2315
  ++size_;
@@ -2982,8 +2347,8 @@ namespace boost {
2982
2347
  return true;
2983
2348
  }
2984
2349
 
2985
- static bool group_equals_equiv(iterator n1, iterator end1,
2986
- iterator n2, iterator end2)
2350
+ static bool group_equals_equiv(
2351
+ iterator n1, iterator end1, iterator n2, iterator end2)
2987
2352
  {
2988
2353
  for (;;) {
2989
2354
  if (*n1 != *n2)
@@ -3031,8 +2396,7 @@ namespace boost {
3031
2396
  return true;
3032
2397
  }
3033
2398
 
3034
- static bool find_equiv(
3035
- iterator n, iterator last, value_type const& v)
2399
+ static bool find_equiv(iterator n, iterator last, value_type const& v)
3036
2400
  {
3037
2401
  for (; n != last; ++n)
3038
2402
  if (*n == v)
@@ -3057,8 +2421,7 @@ namespace boost {
3057
2421
  node_tmp a(n, this->node_alloc());
3058
2422
  const_key_type& k = this->get_key(a.node_);
3059
2423
  std::size_t key_hash = this->hash(k);
3060
- bucket_iterator itb =
3061
- buckets_.at(buckets_.position(key_hash));
2424
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
3062
2425
  node_pointer hint = this->find_node_impl(k, itb);
3063
2426
 
3064
2427
  if (size_ + 1 > max_load_) {
@@ -3126,8 +2489,7 @@ namespace boost {
3126
2489
  const_key_type& k = this->get_key(np.ptr_);
3127
2490
  std::size_t key_hash = this->hash(k);
3128
2491
 
3129
- bucket_iterator itb =
3130
- buckets_.at(buckets_.position(key_hash));
2492
+ bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
3131
2493
 
3132
2494
  node_pointer hint = this->find_node_impl(k, itb);
3133
2495
  buckets_.insert_node_hint(itb, np.ptr_, hint);
@@ -3256,7 +2618,7 @@ namespace boost {
3256
2618
  ////////////////////////////////////////////////////////////////////////
3257
2619
  // fill_buckets
3258
2620
 
3259
- void copy_buckets(table const& src, false_type)
2621
+ void copy_buckets(table const& src, std::false_type)
3260
2622
  {
3261
2623
  BOOST_ASSERT(size_ == 0);
3262
2624
 
@@ -3277,7 +2639,7 @@ namespace boost {
3277
2639
  }
3278
2640
  }
3279
2641
 
3280
- void move_assign_buckets(table& src, false_type)
2642
+ void move_assign_buckets(table& src, std::false_type)
3281
2643
  {
3282
2644
  BOOST_ASSERT(size_ == 0);
3283
2645
  BOOST_ASSERT(max_load_ >= src.size_);
@@ -3286,7 +2648,7 @@ namespace boost {
3286
2648
  node_allocator_type alloc = this->node_alloc();
3287
2649
 
3288
2650
  for (iterator pos = src.begin(); pos != last; ++pos) {
3289
- value_type value = boost::move(*pos);
2651
+ value_type value = std::move(*pos);
3290
2652
  const_key_type& key = extractor::extract(value);
3291
2653
  std::size_t const key_hash = this->hash(key);
3292
2654
 
@@ -3294,7 +2656,7 @@ namespace boost {
3294
2656
 
3295
2657
  node_pointer hint = this->find_node_impl(key, itb);
3296
2658
  node_tmp tmp(
3297
- detail::func::construct_node(alloc, boost::move(value)), alloc);
2659
+ detail::func::construct_node(alloc, std::move(value)), alloc);
3298
2660
 
3299
2661
  buckets_.insert_node_hint(itb, tmp.release(), hint);
3300
2662
  ++size_;
@@ -3311,7 +2673,7 @@ namespace boost {
3311
2673
  for (; itb != last;) {
3312
2674
  bucket_iterator next_itb = itb;
3313
2675
  ++next_itb;
3314
- node_pointer* pp = boost::addressof(itb->next);
2676
+ node_pointer* pp = std::addressof(itb->next);
3315
2677
  while (*pp) {
3316
2678
  node_pointer p = *pp;
3317
2679
  buckets_.extract_node_after(itb, pp);
@@ -3360,7 +2722,7 @@ namespace boost {
3360
2722
  inline void table<Types>::rehash_impl(std::size_t num_buckets)
3361
2723
  {
3362
2724
  bucket_array_type new_buckets(
3363
- num_buckets, buckets_.get_node_allocator());
2725
+ num_buckets, buckets_.get_allocator());
3364
2726
 
3365
2727
  BOOST_TRY
3366
2728
  {
@@ -3397,7 +2759,7 @@ namespace boost {
3397
2759
  }
3398
2760
  BOOST_CATCH_END
3399
2761
 
3400
- buckets_ = boost::move(new_buckets);
2762
+ buckets_ = std::move(new_buckets);
3401
2763
  recalculate_max_load();
3402
2764
  }
3403
2765
 
@@ -3428,8 +2790,7 @@ namespace boost {
3428
2790
  sizeof(choice2::type)
3429
2791
  };
3430
2792
 
3431
- typedef
3432
- typename boost::conditional<value, Key const&, no_key>::type type;
2793
+ typedef typename std::conditional<value, Key const&, no_key>::type type;
3433
2794
  };
3434
2795
 
3435
2796
  template <class ValueType> struct set_extractor
@@ -3439,10 +2800,7 @@ namespace boost {
3439
2800
 
3440
2801
  static key_type const& extract(value_type const& v) { return v; }
3441
2802
 
3442
- static key_type const& extract(BOOST_UNORDERED_RV_REF(value_type) v)
3443
- {
3444
- return v;
3445
- }
2803
+ static key_type const& extract(value_type&& v) { return v; }
3446
2804
 
3447
2805
  static no_key extract() { return no_key(); }
3448
2806
 
@@ -3451,25 +2809,17 @@ namespace boost {
3451
2809
  return no_key();
3452
2810
  }
3453
2811
 
3454
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
3455
2812
  template <class Arg1, class Arg2, class... Args>
3456
2813
  static no_key extract(Arg1 const&, Arg2 const&, Args const&...)
3457
2814
  {
3458
2815
  return no_key();
3459
2816
  }
3460
- #else
3461
- template <class Arg1, class Arg2>
3462
- static no_key extract(Arg1 const&, Arg2 const&)
3463
- {
3464
- return no_key();
3465
- }
3466
- #endif
3467
2817
  };
3468
2818
 
3469
2819
  template <class ValueType> struct map_extractor
3470
2820
  {
3471
2821
  typedef ValueType value_type;
3472
- typedef typename boost::remove_const<typename boost::unordered::detail::
2822
+ typedef typename std::remove_const<typename boost::unordered::detail::
3473
2823
  pair_traits<ValueType>::first_type>::type key_type;
3474
2824
 
3475
2825
  static key_type const& extract(value_type const& v) { return v.first; }
@@ -3487,22 +2837,6 @@ namespace boost {
3487
2837
  return v.first;
3488
2838
  }
3489
2839
 
3490
- #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
3491
- template <class Second>
3492
- static key_type const& extract(
3493
- boost::rv<std::pair<key_type, Second> > const& v)
3494
- {
3495
- return v.first;
3496
- }
3497
-
3498
- template <class Second>
3499
- static key_type const& extract(
3500
- boost::rv<std::pair<key_type const, Second> > const& v)
3501
- {
3502
- return v.first;
3503
- }
3504
- #endif
3505
-
3506
2840
  template <class Arg1>
3507
2841
  static key_type const& extract(key_type const& k, Arg1 const&)
3508
2842
  {
@@ -3517,63 +2851,40 @@ namespace boost {
3517
2851
  }
3518
2852
 
3519
2853
  template <class Arg1, class Arg2>
3520
- 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&)
3521
2859
  {
3522
- return no_key();
2860
+ return {};
3523
2861
  }
3524
2862
 
3525
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
3526
2863
  template <class Arg1, class Arg2, class Arg3, class... Args>
3527
2864
  static no_key extract(
3528
2865
  Arg1 const&, Arg2 const&, Arg3 const&, Args const&...)
3529
2866
  {
3530
2867
  return no_key();
3531
2868
  }
3532
- #endif
3533
-
3534
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
3535
-
3536
- #define BOOST_UNORDERED_KEY_FROM_TUPLE(namespace_) \
3537
- template <typename T2> \
3538
- static no_key extract(boost::unordered::piecewise_construct_t, \
3539
- namespace_ tuple<> const&, T2 const&) \
3540
- { \
3541
- return no_key(); \
3542
- } \
3543
- \
3544
- template <typename T, typename T2> \
3545
- static typename is_key<key_type, T>::type extract( \
3546
- boost::unordered::piecewise_construct_t, namespace_ tuple<T> const& k, \
3547
- T2 const&) \
3548
- { \
3549
- return typename is_key<key_type, T>::type(namespace_ get<0>(k)); \
3550
- }
3551
-
3552
- #else
3553
-
3554
- #define BOOST_UNORDERED_KEY_FROM_TUPLE(namespace_) \
3555
- static no_key extract( \
3556
- boost::unordered::piecewise_construct_t, namespace_ tuple<> const&) \
3557
- { \
3558
- return no_key(); \
3559
- } \
3560
- \
3561
- template <typename T> \
3562
- static typename is_key<key_type, T>::type extract( \
3563
- boost::unordered::piecewise_construct_t, namespace_ tuple<T> const& k) \
3564
- { \
3565
- return typename is_key<key_type, T>::type(namespace_ get<0>(k)); \
3566
- }
3567
-
3568
- #endif
3569
-
3570
- BOOST_UNORDERED_KEY_FROM_TUPLE(boost::)
3571
2869
 
3572
- #if BOOST_UNORDERED_TUPLE_ARGS
3573
- BOOST_UNORDERED_KEY_FROM_TUPLE(std::)
3574
- #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
+ }
3575
2876
 
3576
- #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
+ }
3577
2888
  };
3578
2889
 
3579
2890
  template <class Container, class Predicate>
@@ -3594,12 +2905,8 @@ namespace boost {
3594
2905
 
3595
2906
  return (size - c.size());
3596
2907
  }
3597
- }
3598
- }
3599
- }
3600
-
3601
- #undef BOOST_UNORDERED_EMPLACE_TEMPLATE
3602
- #undef BOOST_UNORDERED_EMPLACE_ARGS
3603
- #undef BOOST_UNORDERED_EMPLACE_FORWARD
2908
+ } // namespace detail
2909
+ } // namespace unordered
2910
+ } // namespace boost
3604
2911
 
3605
2912
  #endif