passenger 6.0.19 → 6.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1293) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +65 -3
  3. data/CONTRIBUTORS +2 -0
  4. data/README.md +2 -2
  5. data/bin/passenger-install-nginx-module +4 -4
  6. data/build/integration_tests.rb +2 -1
  7. data/build/support/cxx_dependency_map.rb +155 -54
  8. data/dev/copy_boost_headers +21 -7
  9. data/dev/nginx_version_sha256 +72 -0
  10. data/package.json +15 -15
  11. data/src/agent/AgentMain.cpp +2 -8
  12. data/src/agent/Core/AdminPanelConnector.h +2 -3
  13. data/src/agent/Core/ApiServer.h +1 -1
  14. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +8 -1
  15. data/src/agent/Core/Config.h +6 -3
  16. data/src/agent/Core/Controller/AppResponse.h +0 -1
  17. data/src/agent/Core/Controller/Config.h +2 -2
  18. data/src/agent/Core/Controller/SendRequest.cpp +2 -2
  19. data/src/agent/Core/CoreMain.cpp +1 -0
  20. data/src/agent/Core/ResponseCache.h +3 -2
  21. data/src/agent/Core/SecurityUpdateChecker.h +1 -1
  22. data/src/agent/Core/SpawningKit/Handshake/Perform.h +4 -4
  23. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +2 -2
  24. data/src/agent/ExecHelper/ExecHelperMain.cpp +10 -12
  25. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +7 -10
  26. data/src/agent/MainFunctions.h +38 -0
  27. data/src/agent/Shared/ApiServerUtils.h +3 -2
  28. data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -1
  29. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +2 -3
  30. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +1 -0
  31. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +6 -4
  32. data/src/agent/Watchdog/ApiServer.h +1 -1
  33. data/src/agent/Watchdog/Config.h +1 -1
  34. data/src/agent/Watchdog/WatchdogMain.cpp +5 -12
  35. data/src/apache2_module/Hooks.cpp +26 -1
  36. data/src/cxx_supportlib/ConfigKit/Common.h +1 -1
  37. data/src/cxx_supportlib/Constants.h +1 -1
  38. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -1
  39. data/src/cxx_supportlib/FileTools/PathManip.cpp +10 -1
  40. data/src/cxx_supportlib/IOTools/IOUtils.cpp +2 -6
  41. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +3 -3
  42. data/src/cxx_supportlib/JsonTools/CBindings.cpp +0 -2
  43. data/src/cxx_supportlib/JsonTools/JsonUtils.h +4 -4
  44. data/src/cxx_supportlib/LoggingKit/Context.h +16 -21
  45. data/src/cxx_supportlib/LoggingKit/Forward.h +0 -2
  46. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +36 -72
  47. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +12 -4
  48. data/src/cxx_supportlib/MemoryKit/mbuf.h +1 -1
  49. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +1 -1
  50. data/src/cxx_supportlib/ResourceLocator.h +1 -1
  51. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +3 -94
  52. data/src/cxx_supportlib/SecurityKit/Crypto.h +0 -8
  53. data/src/cxx_supportlib/ServerKit/Context.h +6 -0
  54. data/src/cxx_supportlib/ServerKit/Errors.h +3 -2
  55. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +99 -64
  56. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +4 -1
  57. data/src/cxx_supportlib/ServerKit/HttpRequest.h +2 -2
  58. data/src/cxx_supportlib/ServerKit/HttpServer.h +3 -2
  59. data/src/cxx_supportlib/ServerKit/llerrors.h +84 -0
  60. data/src/cxx_supportlib/ServerKit/llhttp.c +10168 -0
  61. data/src/cxx_supportlib/ServerKit/llhttp.h +903 -0
  62. data/src/cxx_supportlib/ServerKit/llhttp_api.c +510 -0
  63. data/src/cxx_supportlib/ServerKit/llhttp_http.c +170 -0
  64. data/src/cxx_supportlib/ServerKit/llversion.h +12 -0
  65. data/src/cxx_supportlib/ServerKit/url_parser.c +574 -0
  66. data/src/cxx_supportlib/ServerKit/url_parser.h +74 -0
  67. data/src/cxx_supportlib/StaticString.h +3 -1
  68. data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
  69. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +12 -3
  70. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +5 -0
  71. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +2 -2
  72. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +14 -14
  73. data/src/cxx_supportlib/SystemTools/UserDatabase.h +6 -10
  74. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +11 -9
  75. data/src/cxx_supportlib/Utils.cpp +1 -1
  76. data/src/cxx_supportlib/oxt/implementation.cpp +1 -2
  77. data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +26 -32
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +194 -56
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +34 -42
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/append.hpp +10 -23
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +21 -34
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +26 -45
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +26 -43
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +30 -52
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +282 -0
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +178 -863
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +1 -1
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +64 -98
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +17 -22
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +18 -23
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +4 -8
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +30 -42
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +65 -96
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +20 -29
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +36 -48
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +31 -44
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +73 -23
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +34 -45
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +108 -151
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +6 -82
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +6 -51
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +30 -40
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +50 -76
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +13 -15
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +3 -3
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +23 -32
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +20 -29
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +97 -299
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +97 -288
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +90 -288
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +551 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +365 -290
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +29 -39
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +27 -39
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +33 -49
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +27 -39
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +4 -4
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +25 -85
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +16 -16
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +8 -25
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +17 -17
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +60 -272
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +52 -79
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/connect_pipe.hpp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +11 -24
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +2 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +37 -34
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +302 -262
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +12 -20
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +2 -10
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +2 -4
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +5 -13
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +21 -20
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +2 -2
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +129 -563
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +3 -3
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +3 -7
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +2 -23
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +4 -4
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +21 -97
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +1 -1
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +155 -963
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +3 -11
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -5
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +2 -24
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +4 -4
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +41 -3
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +40 -3
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +20 -3
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +20 -3
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +3 -5
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/exception.hpp +2 -13
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +8 -60
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +6 -6
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +3 -43
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -12
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +9 -10
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +3 -5
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +41 -104
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +3 -3
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +9 -15
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +101 -123
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -15
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +2 -2
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +13 -4
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +2 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +17 -8
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +5 -5
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_descriptor_service.ipp +2 -2
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_file_service.ipp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.ipp +69 -35
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_socket_service_base.ipp +2 -2
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +2 -2
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +15 -6
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +1 -1
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_serial_port_service.ipp +1 -1
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +9 -9
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +26 -18
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +3 -3
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +2 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +2 -2
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +12 -4
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +2 -3
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +57 -4
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +63 -5
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +47 -68
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +2 -3
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +12 -12
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_defer.hpp +209 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_dispatch.hpp +195 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_post.hpp +209 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +6 -10
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +6 -3
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_op.hpp +6 -3
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_service.hpp +17 -9
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +6 -3
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_op.hpp +6 -3
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_file_service.hpp +2 -3
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_null_buffers_op.hpp +5 -4
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_operation.hpp +1 -1
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_service.hpp +4 -3
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_accept_op.hpp +11 -12
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_connect_op.hpp +5 -4
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recv_op.hpp +6 -3
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +7 -4
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +6 -3
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_send_op.hpp +6 -3
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_sendto_op.hpp +6 -3
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service.hpp +11 -13
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service_base.hpp +9 -9
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_wait_op.hpp +5 -4
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +7 -49
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +20 -3
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +1 -6
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +13 -43
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +3 -5
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +4 -15
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +1 -1
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +1 -1
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +3 -3
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +1 -1
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +1 -1
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_serial_port_service.hpp +1 -1
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +1 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +61 -25
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +37 -4
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +89 -12
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +41 -4
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +40 -4
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +41 -4
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +41 -4
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +41 -4
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +40 -4
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +20 -20
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +135 -38
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +37 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +1 -1
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +2 -2
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +4 -13
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +4 -4
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +4 -4
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +3 -3
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_task.hpp +1 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +20 -3
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +2 -3
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +3 -3
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +12 -3
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +11 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +1 -1
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +3 -5
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -6
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -6
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -6
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -6
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -6
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -6
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +13 -13
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +1 -1
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +3 -5
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +1 -1
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +12 -22
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +2 -2
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +1 -1
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +104 -90
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +4 -4
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +3 -3
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +2 -2
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +20 -34
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +7 -117
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +36 -34
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +34 -112
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +268 -991
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +3 -4
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +296 -536
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +232 -409
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +20 -73
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +30 -72
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +24 -170
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +3 -3
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +2 -30
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +240 -398
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +20 -73
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +149 -296
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +56 -59
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +149 -296
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +1 -16
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +1 -25
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +59 -43
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +56 -61
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +1 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +20 -24
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +1 -1
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +7 -7
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +56 -34
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +56 -34
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +25 -28
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel.hpp +3 -3
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_error.hpp +1 -1
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +15 -15
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +5 -4
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +1 -1
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/concurrent_channel.hpp +3 -3
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +1 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro_traits.hpp +1 -1
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +1 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +10 -13
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_message.hpp +27 -20
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +193 -38
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_payload.hpp +143 -14
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +24 -9
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +77 -17
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +20 -12
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +50 -50
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +3 -3
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +1 -1
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/has_signature.hpp +1 -1
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +46 -34
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +1 -1
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +33 -96
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/channel_error.ipp +2 -2
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +62 -20
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +48 -45
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +56 -60
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +18 -4
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +5 -5
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +3 -3
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +27 -31
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +1 -1
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +1 -1
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +15 -21
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +13 -13
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/file_base.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -6
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -6
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +10 -14
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +10 -17
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +37 -100
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +99 -107
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +66 -25
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +55 -178
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +55 -178
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancellation_signal.ipp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +123 -73
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +84 -234
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.hpp +1 -1
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.ipp +1 -1
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +32 -97
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +73 -31
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +5 -58
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +4 -4
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +3 -35
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +60 -43
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +3 -3
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +39 -56
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +2 -1
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +4 -8
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +36 -98
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +206 -429
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +60 -206
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +456 -970
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +43 -411
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +207 -423
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -3
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +2 -2
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +2 -2
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +19 -25
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +32 -109
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +5 -4
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +2 -2
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +79 -425
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +213 -427
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +58 -194
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +91 -120
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +33 -25
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +26 -35
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +28 -36
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +13 -19
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +16 -22
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +33 -42
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +13 -18
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +15 -20
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +13 -3
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +26 -35
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +46 -76
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +4 -8
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +17 -1
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +9 -13
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +17 -17
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -14
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +18 -22
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +9 -13
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +24 -32
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -3
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -3
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +1 -1
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +16 -20
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +14 -18
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +7 -7
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +1 -1
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +1 -1
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +6 -6
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/is_contiguous_iterator.hpp +2 -2
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +2 -6
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +1 -1
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +1 -1
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/local/seq_packet_protocol.hpp +86 -0
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +3 -9
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -61
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +29 -105
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +21 -29
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +24 -34
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +1 -1
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +1 -1
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +1 -1
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +36 -34
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +176 -333
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/prepend.hpp +11 -23
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +57 -70
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/random_access_file.hpp +1 -1
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +136 -168
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +35 -52
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +256 -298
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/readable_pipe.hpp +1 -1
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/recycling_allocator.hpp +15 -15
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +7 -9
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +35 -47
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +108 -246
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +70 -79
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +1 -1
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +1 -1
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_base.hpp +173 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +1 -1
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +127 -161
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +1 -3
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +24 -24
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +3 -3
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +3 -7
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +3 -3
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +3 -7
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +16 -75
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -3
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +4 -4
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +15 -19
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -2
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -3
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +1 -1
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +2 -4
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +3 -3
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +1 -1
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +1 -1
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +1 -1
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +51 -82
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -1
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +1 -1
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -6
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +91 -118
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_file.hpp +1 -1
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +3 -3
  590. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +62 -62
  591. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -6
  592. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +35 -48
  593. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +91 -273
  594. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  595. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +14 -18
  596. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +16 -20
  597. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +16 -20
  598. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +16 -20
  599. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +16 -20
  600. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +16 -20
  601. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +15 -22
  602. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +16 -20
  603. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +16 -20
  604. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +16 -20
  605. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +16 -20
  606. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +20 -26
  607. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +22 -30
  608. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +22 -30
  609. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  610. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +1 -1
  611. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  612. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  613. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  614. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +6 -24
  615. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  616. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  617. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  618. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +15 -21
  619. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +8 -12
  620. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +2 -6
  621. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  622. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  623. data/src/cxx_supportlib/vendor-modified/boost/asio/writable_pipe.hpp +1 -1
  624. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +122 -146
  625. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +34 -50
  626. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  627. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -28
  628. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -3
  629. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +2 -16
  630. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +2 -3
  631. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +5 -3
  632. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +6 -4
  633. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +0 -49
  634. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +107 -40
  635. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +32 -5
  636. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +12 -13
  637. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +7 -8
  638. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +26 -27
  639. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +122 -35
  640. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +2 -3
  641. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +7 -0
  642. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +42 -0
  643. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +1 -2
  644. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +3 -4
  645. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +2 -3
  646. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +2 -3
  647. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +2 -60
  648. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +230 -1740
  649. data/src/cxx_supportlib/vendor-modified/boost/bind/{bind_cc.hpp → detail/bind_cc.hpp} +20 -20
  650. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf2_cc.hpp +210 -0
  651. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf_cc.hpp +405 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/integer_sequence.hpp +111 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +1 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/tuple_for_each.hpp +64 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +140 -290
  656. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +3 -16
  657. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +0 -279
  658. data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +0 -6
  659. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/is_evenly_divisible_by.hpp +1 -7
  661. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/requires_cxx11.hpp +23 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -1
  663. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +1 -1
  664. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +1 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +3 -3
  666. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +1 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  668. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +4 -1
  669. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  670. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +4 -1
  671. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
  672. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +41 -0
  673. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +8 -0
  675. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +8 -2
  676. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +5 -0
  677. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -1
  678. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +1 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +4 -0
  681. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +4 -2
  682. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +5 -0
  683. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +1 -0
  684. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -0
  685. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -0
  686. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -0
  687. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +4 -0
  688. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +4 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +13 -3
  691. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +8 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +16 -1
  694. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +56 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +32 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +16 -1
  697. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +6 -7
  698. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +18 -19
  699. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +27 -29
  700. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +0 -29
  701. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +144 -145
  702. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +4 -5
  703. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +48 -49
  704. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  705. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +14 -15
  706. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +22 -22
  707. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +1 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +71 -69
  709. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +48 -48
  710. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +38 -40
  711. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +165 -153
  712. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +162 -163
  713. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +1 -2
  714. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +48 -12
  715. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +6 -8
  716. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +44 -46
  717. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +10 -11
  718. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +18 -19
  719. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +0 -8
  720. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
  721. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +83 -84
  722. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +3 -3
  723. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +77 -1
  724. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +81 -85
  725. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +231 -233
  726. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +86 -86
  727. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -33
  728. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +107 -110
  729. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +9 -11
  730. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +10 -11
  731. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +29 -17
  732. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +2 -2
  733. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
  734. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  736. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +80 -82
  737. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +81 -81
  738. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +24 -26
  739. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +147 -122
  740. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +109 -110
  741. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +32 -32
  742. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +165 -194
  743. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +4 -5
  744. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +263 -199
  745. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_integral.hpp +146 -0
  746. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +6 -6
  747. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +296 -61
  748. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple_like.hpp +62 -0
  749. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/mulx.hpp +79 -0
  750. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +38 -124
  751. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +1 -0
  752. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +27 -20
  753. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +4 -5
  754. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +8 -40
  755. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_tuple_like.hpp +36 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +6 -7
  757. data/src/cxx_supportlib/vendor-modified/boost/core/alignof.hpp +57 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +22 -8
  759. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +362 -31
  760. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +29 -3
  761. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +46 -0
  762. data/src/cxx_supportlib/vendor-modified/boost/core/detail/is_same.hpp +39 -0
  763. data/src/cxx_supportlib/vendor-modified/boost/core/detail/lwt_unattended.hpp +66 -0
  764. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_pause.hpp +71 -0
  765. data/src/cxx_supportlib/vendor-modified/boost/{smart_ptr → core}/detail/sp_thread_sleep.hpp +39 -21
  766. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_yield.hpp +100 -0
  767. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +7 -7
  768. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +7 -0
  769. data/src/cxx_supportlib/vendor-modified/boost/core/functor.hpp +41 -0
  770. data/src/cxx_supportlib/vendor-modified/boost/core/identity.hpp +61 -0
  771. data/src/cxx_supportlib/vendor-modified/boost/core/invoke_swap.hpp +93 -0
  772. data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +10 -15
  773. data/src/cxx_supportlib/vendor-modified/boost/core/launder.hpp +69 -0
  774. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +33 -36
  775. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +3 -3
  776. data/src/cxx_supportlib/vendor-modified/boost/core/make_span.hpp +59 -0
  777. data/src/cxx_supportlib/vendor-modified/boost/core/max_align.hpp +82 -0
  778. data/src/cxx_supportlib/vendor-modified/boost/core/memory_resource.hpp +108 -0
  779. data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +7 -0
  780. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +23 -16
  781. data/src/cxx_supportlib/vendor-modified/boost/core/serialization.hpp +131 -0
  782. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +31 -0
  783. data/src/cxx_supportlib/vendor-modified/boost/core/snprintf.hpp +173 -0
  784. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +17 -17
  785. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +10 -40
  786. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +29 -5
  787. data/src/cxx_supportlib/vendor-modified/boost/core/yield_primitives.hpp +12 -0
  788. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +2 -0
  789. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -6
  790. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +6 -97
  791. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +1 -1
  792. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +1 -1
  793. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +1 -1
  794. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +22 -10
  795. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +1 -1
  796. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +1 -1
  797. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +24 -0
  798. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +1 -1
  799. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +4 -4
  800. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +1 -1
  801. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +1 -1
  802. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +1 -1
  803. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +2 -2
  804. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +1 -1
  805. data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +1 -3
  806. data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +1 -3
  807. data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +1 -3
  808. data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +1 -3
  809. data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +1 -3
  810. data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +1 -3
  811. data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +1 -3
  812. data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +1 -3
  813. data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +1 -3
  814. data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +1 -3
  815. data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +1 -3
  816. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +49 -198
  817. data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +36 -41
  818. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +277 -420
  819. data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +1 -31
  820. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +5 -61
  821. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +2 -2
  822. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +24 -25
  823. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +12 -13
  824. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +1 -1
  825. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +24 -25
  826. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +65 -66
  827. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +20 -20
  828. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +7 -7
  829. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +10 -10
  830. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +3 -3
  831. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +5 -5
  832. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +10 -10
  833. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +3 -3
  834. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +24 -24
  835. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +1 -1
  836. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +1 -1
  837. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +14 -15
  838. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +277 -0
  839. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +11 -49
  840. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_integral.hpp +119 -0
  841. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_mix.hpp +130 -0
  842. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +41 -41
  843. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +14 -20
  844. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +6 -6
  845. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +12 -12
  846. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +7 -7
  847. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +19 -19
  848. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +6 -0
  849. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +3 -3
  850. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +6 -17
  851. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  852. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +14 -14
  853. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +20 -20
  854. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +22 -22
  855. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +21 -21
  856. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +28 -28
  857. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +58 -1
  858. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +268 -239
  859. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +9 -9
  860. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +57 -58
  861. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +3 -3
  862. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
  863. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +3 -3
  864. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +12 -13
  865. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +24 -25
  866. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +24 -25
  867. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +14 -15
  868. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +1 -1
  869. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +61 -62
  870. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +24 -25
  871. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +12 -13
  872. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +18 -19
  873. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +4 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +36 -37
  875. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -34
  876. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +11 -11
  877. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +2 -2
  878. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +10 -11
  879. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +148 -0
  880. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +2 -2
  881. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +7 -13
  882. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +59 -0
  883. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +113 -131
  884. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +612 -645
  885. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +85 -79
  886. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +25 -32
  887. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +22 -29
  888. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +73 -0
  889. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  890. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +21 -16
  891. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +7 -9
  892. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +22 -161
  893. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +9 -12
  894. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +4 -2
  895. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +3 -1
  896. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +3 -1
  897. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +10 -18
  898. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +13 -14
  899. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +24 -14
  900. data/src/cxx_supportlib/vendor-modified/boost/limits.hpp +12 -12
  901. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +5 -5
  902. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +5 -3
  903. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +20 -19
  904. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +41 -56
  905. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +11 -10
  906. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +3 -2
  907. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +32 -34
  908. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +4 -5
  909. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +11 -11
  910. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +0 -1
  911. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +3 -3
  912. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +5 -6
  913. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  914. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -2
  915. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  916. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +65 -24
  917. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +28 -28
  918. data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +1 -1
  919. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +72 -23
  920. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +81 -1
  921. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +22 -22
  922. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +65 -66
  923. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +2 -2
  924. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +8 -6
  925. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +97 -17
  926. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +9 -0
  927. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/config.hpp +11 -0
  928. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_append.hpp +140 -4
  929. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_defer.hpp +119 -0
  930. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +108 -4
  931. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_front.hpp +13 -1
  932. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_value_list.hpp +41 -0
  933. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list_v.hpp +27 -0
  934. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +1 -1
  935. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_plus.hpp +4 -1
  936. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_rename.hpp +18 -5
  937. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_value.hpp +25 -0
  938. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +9 -0
  939. data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +10 -0
  940. data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +180 -3
  941. data/src/cxx_supportlib/vendor-modified/boost/mp11/utility.hpp +2 -96
  942. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  943. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +3 -3
  944. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +3 -44
  945. data/src/cxx_supportlib/vendor-modified/boost/nondet_random.hpp +22 -0
  946. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +8 -0
  947. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +5 -4
  948. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +3 -3
  949. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +2 -2
  950. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
  951. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +6 -6
  952. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
  953. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +4 -4
  954. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +2 -2
  955. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +1 -1
  956. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +1 -1
  957. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +4 -4
  958. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +1 -1
  959. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +1 -1
  960. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +3 -3
  961. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +1 -1
  962. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +1 -1
  963. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +3 -3
  964. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  965. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +13 -0
  966. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msvc.h +53 -0
  967. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +1 -0
  968. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  969. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +1 -1
  970. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  971. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +2 -0
  972. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +1 -1
  973. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +203 -0
  974. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +14 -14
  975. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +2 -2
  976. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +1 -0
  977. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +4 -82
  978. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/gcd_lcm.hpp +53 -0
  979. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_evenly_divisible_by.hpp +32 -0
  980. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_ratio.hpp +28 -0
  981. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +1 -3
  982. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +5 -249
  983. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +30 -56
  984. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +0 -533
  985. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -7
  986. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +9 -9
  987. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +7 -7
  988. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +1 -0
  989. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +23 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +1 -1
  991. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +4 -6
  992. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +1 -0
  993. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +2 -11
  994. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -0
  995. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +1 -0
  996. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +1 -0
  997. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +70 -0
  998. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +1 -0
  999. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +1 -0
  1000. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +2 -0
  1001. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -11
  1002. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +1 -0
  1003. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +4 -8
  1004. data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +3 -12
  1005. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +14 -50
  1006. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +16 -55
  1007. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +62 -124
  1008. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +29 -52
  1009. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +7 -7
  1010. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +4 -4
  1011. data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +7 -7
  1012. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +3 -13
  1013. data/src/cxx_supportlib/vendor-modified/boost/system/detail/mutex.hpp +128 -0
  1014. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +1 -46
  1015. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +14 -13
  1016. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +2 -2
  1017. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +7 -7
  1018. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +3 -3
  1019. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +2 -2
  1020. data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +3 -3
  1021. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +1 -1
  1022. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +1 -24
  1023. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +1 -14
  1024. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +1 -14
  1025. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +2 -12
  1026. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +0 -11
  1027. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +0 -2
  1028. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +0 -16
  1029. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +0 -11
  1030. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +0 -11
  1031. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +0 -19
  1032. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +4 -6
  1033. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -26
  1034. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +1 -18
  1035. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +1 -14
  1036. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +11 -4
  1037. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_to_unsigned.hpp +55 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_trim.hpp +29 -0
  1039. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +5 -5
  1040. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +0 -1
  1041. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +3 -2
  1042. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +4 -4
  1043. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +2 -2
  1044. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +3 -3
  1045. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -1
  1046. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_swappable_cxx_11.hpp +70 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +22 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +4 -24
  1050. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_swappable.hpp +92 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +2 -3
  1052. data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +1 -10
  1053. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -6
  1054. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +2 -4
  1055. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +2 -4
  1056. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +2 -5
  1057. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +2 -15
  1058. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +4 -51
  1059. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +2 -6
  1060. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +2 -9
  1061. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +2 -46
  1062. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +2 -5
  1063. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +2 -29
  1064. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +2 -9
  1065. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +4 -9
  1066. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +2 -6
  1067. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +2 -5
  1068. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +2 -9
  1069. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +2 -19
  1070. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +2 -5
  1071. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +2 -5
  1072. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +2 -12
  1073. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +2 -4
  1074. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +2 -10
  1075. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +2 -5
  1076. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +8 -202
  1077. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +860 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +51 -0
  1079. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +716 -0
  1080. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +52 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocator_constructed.hpp +59 -0
  1082. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/archive_constructed.hpp +71 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/bad_archive_exception.hpp +27 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +105 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +120 -85
  1086. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +1764 -0
  1087. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2271 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/element_type.hpp +64 -0
  1089. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +86 -0
  1090. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_set_types.hpp +44 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/ignore_wshadow.hpp +35 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +204 -0
  1093. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +139 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +92 -0
  1095. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/reentrancy_check.hpp +138 -0
  1096. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/restore_wshadow.hpp +11 -0
  1097. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/rw_spinlock.hpp +179 -0
  1098. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +651 -0
  1099. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/tuple_rotate_right.hpp +52 -0
  1100. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +356 -1118
  1101. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +2 -0
  1102. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/mulx.hpp +129 -0
  1103. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/narrow_cast.hpp +44 -0
  1104. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/opt_storage.hpp +30 -0
  1105. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +96 -150
  1106. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialization_version.hpp +74 -0
  1107. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_container.hpp +204 -0
  1108. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_fca_container.hpp +156 -0
  1109. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_tracked_address.hpp +104 -0
  1110. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/static_assert.hpp +16 -0
  1111. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/throw_exception.hpp +30 -0
  1112. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +136 -19
  1113. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +4 -5
  1114. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +171 -103
  1115. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +1 -6
  1116. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +70 -46
  1117. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +1 -6
  1118. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +406 -899
  1119. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +7 -13
  1120. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +895 -0
  1121. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +44 -0
  1122. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +699 -0
  1123. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +44 -0
  1124. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +253 -618
  1125. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +8 -14
  1126. data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +4 -1
  1127. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +8 -8
  1128. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1129. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +2 -9
  1130. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +0 -11
  1131. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +14 -20
  1132. data/src/helper-scripts/wsgi-loader.py +2 -2
  1133. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +2 -2
  1134. data/src/ruby_supportlib/phusion_passenger/common_library.rb +16 -5
  1135. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +1 -1
  1136. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +3 -1
  1137. data/src/ruby_supportlib/phusion_passenger/native_support.rb +10 -7
  1138. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +8 -10
  1139. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +14 -0
  1140. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +4 -1
  1141. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +6 -6
  1142. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +11 -12
  1143. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -1
  1144. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +4 -0
  1145. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +5 -1
  1146. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  1147. metadata +109 -150
  1148. data/src/cxx_supportlib/ServerKit/http_parser.cpp +0 -2265
  1149. data/src/cxx_supportlib/ServerKit/http_parser.h +0 -330
  1150. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +0 -456
  1151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +0 -90
  1152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +0 -93
  1153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +0 -70
  1154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +0 -67
  1155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +0 -101
  1156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +0 -80
  1157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +0 -64
  1158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +0 -216
  1159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +0 -64
  1160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +0 -294
  1161. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +0 -406
  1162. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +0 -1254
  1163. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +0 -498
  1164. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +0 -154
  1165. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +0 -111
  1166. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +0 -130
  1167. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +0 -263
  1168. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +0 -235
  1169. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +0 -92
  1170. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +0 -296
  1171. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +0 -38
  1172. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +0 -101
  1173. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +0 -287
  1174. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +0 -50
  1175. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +0 -296
  1176. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +0 -93
  1177. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +0 -318
  1178. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +0 -259
  1179. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +0 -259
  1180. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +0 -492
  1181. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +0 -256
  1182. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +0 -459
  1183. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +0 -106
  1184. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +0 -113
  1185. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +0 -300
  1186. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +0 -275
  1187. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +0 -64
  1188. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +0 -300
  1189. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +0 -116
  1190. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +0 -116
  1191. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +0 -114
  1192. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +0 -114
  1193. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +0 -110
  1194. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +0 -110
  1195. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +0 -110
  1196. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +0 -110
  1197. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +0 -110
  1198. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +0 -114
  1199. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +0 -114
  1200. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +0 -236
  1201. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +0 -236
  1202. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +0 -110
  1203. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +0 -110
  1204. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +0 -114
  1205. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +0 -114
  1206. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +0 -495
  1207. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +0 -462
  1208. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +0 -581
  1209. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +0 -563
  1210. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +0 -40
  1211. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +0 -41
  1212. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +0 -147
  1213. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +0 -39
  1214. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +0 -39
  1215. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +0 -201
  1216. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +0 -67
  1217. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +0 -57
  1218. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +0 -179
  1219. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +0 -228
  1220. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +0 -441
  1221. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +0 -345
  1222. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +0 -103
  1223. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_template.hpp +0 -1047
  1224. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +0 -130
  1225. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +0 -475
  1226. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +0 -71
  1227. data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +0 -1278
  1228. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +0 -133
  1229. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1230. data/src/cxx_supportlib/vendor-modified/boost/function/detail/function_iterate.hpp +0 -16
  1231. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +0 -39
  1232. data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +0 -369
  1233. data/src/cxx_supportlib/vendor-modified/boost/function/detail/prologue.hpp +0 -26
  1234. data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +0 -26
  1235. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +0 -6
  1236. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +0 -89
  1237. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +0 -124
  1238. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +0 -126
  1239. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +0 -89
  1240. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +0 -367
  1241. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +0 -1342
  1242. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +0 -30
  1243. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +0 -22
  1244. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +0 -19
  1245. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +0 -30
  1246. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +0 -30
  1247. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +0 -30
  1248. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +0 -30
  1249. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +0 -30
  1250. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +0 -30
  1251. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +0 -30
  1252. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +0 -30
  1253. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +0 -30
  1254. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +0 -30
  1255. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +0 -30
  1256. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +0 -31
  1257. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +0 -30
  1258. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +0 -25
  1259. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +0 -15
  1260. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +0 -30
  1261. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +0 -30
  1262. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +0 -51
  1263. data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +0 -17
  1264. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +0 -278
  1265. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +0 -297
  1266. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +0 -265
  1267. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +0 -100
  1268. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -58
  1269. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +0 -34
  1270. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +0 -118
  1271. data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +0 -80
  1272. data/src/cxx_supportlib/vendor-modified/boost/typeof/message.hpp +0 -8
  1273. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +0 -121
  1274. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +0 -60
  1275. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +0 -38
  1276. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +0 -50
  1277. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +0 -135
  1278. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +0 -61
  1279. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +0 -32
  1280. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +0 -160
  1281. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +0 -149
  1282. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +0 -27
  1283. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +0 -37
  1284. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +0 -187
  1285. data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +0 -29
  1286. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +0 -166
  1287. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +0 -321
  1288. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +0 -471
  1289. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +0 -621
  1290. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +0 -171
  1291. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +0 -1921
  1292. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +0 -64
  1293. /data/dev/{webpacketpp.patch → websocketpp.patch} +0 -0
@@ -2,7 +2,7 @@
2
2
  // buffer.hpp
3
3
  // ~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -49,21 +49,6 @@
49
49
  # include <boost/asio/detail/functional.hpp>
50
50
  #endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
51
51
 
52
- #if defined(BOOST_ASIO_HAS_BOOST_WORKAROUND)
53
- # include <boost/detail/workaround.hpp>
54
- # if !defined(__clang__)
55
- # if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
56
- # define BOOST_ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND
57
- # endif // BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
58
- # elif BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
59
- # define BOOST_ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND
60
- # endif // BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
61
- #endif // defined(BOOST_ASIO_HAS_BOOST_WORKAROUND)
62
-
63
- #if defined(BOOST_ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
64
- # include <boost/asio/detail/type_traits.hpp>
65
- #endif // defined(BOOST_ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
66
-
67
52
  #include <boost/asio/detail/push_options.hpp>
68
53
 
69
54
  namespace boost {
@@ -95,14 +80,14 @@ class mutable_buffer
95
80
  {
96
81
  public:
97
82
  /// Construct an empty buffer.
98
- mutable_buffer() BOOST_ASIO_NOEXCEPT
83
+ mutable_buffer() noexcept
99
84
  : data_(0),
100
85
  size_(0)
101
86
  {
102
87
  }
103
88
 
104
89
  /// Construct a buffer to represent a given memory range.
105
- mutable_buffer(void* data, std::size_t size) BOOST_ASIO_NOEXCEPT
90
+ mutable_buffer(void* data, std::size_t size) noexcept
106
91
  : data_(data),
107
92
  size_(size)
108
93
  {
@@ -124,7 +109,7 @@ public:
124
109
  #endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
125
110
 
126
111
  /// Get a pointer to the beginning of the memory range.
127
- void* data() const BOOST_ASIO_NOEXCEPT
112
+ void* data() const noexcept
128
113
  {
129
114
  #if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
130
115
  if (size_ && debug_check_)
@@ -134,13 +119,13 @@ public:
134
119
  }
135
120
 
136
121
  /// Get the size of the memory range.
137
- std::size_t size() const BOOST_ASIO_NOEXCEPT
122
+ std::size_t size() const noexcept
138
123
  {
139
124
  return size_;
140
125
  }
141
126
 
142
127
  /// Move the start of the buffer by the specified number of bytes.
143
- mutable_buffer& operator+=(std::size_t n) BOOST_ASIO_NOEXCEPT
128
+ mutable_buffer& operator+=(std::size_t n) noexcept
144
129
  {
145
130
  std::size_t offset = n < size_ ? n : size_;
146
131
  data_ = static_cast<char*>(data_) + offset;
@@ -172,7 +157,7 @@ public:
172
157
  typedef const mutable_buffer* const_iterator;
173
158
 
174
159
  /// Construct to represent a given memory range.
175
- mutable_buffers_1(void* data, std::size_t size) BOOST_ASIO_NOEXCEPT
160
+ mutable_buffers_1(void* data, std::size_t size) noexcept
176
161
  : mutable_buffer(data, size)
177
162
  {
178
163
  }
@@ -186,19 +171,19 @@ public:
186
171
  #endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
187
172
 
188
173
  /// Construct to represent a single modifiable buffer.
189
- explicit mutable_buffers_1(const mutable_buffer& b) BOOST_ASIO_NOEXCEPT
174
+ explicit mutable_buffers_1(const mutable_buffer& b) noexcept
190
175
  : mutable_buffer(b)
191
176
  {
192
177
  }
193
178
 
194
179
  /// Get a random-access iterator to the first element.
195
- const_iterator begin() const BOOST_ASIO_NOEXCEPT
180
+ const_iterator begin() const noexcept
196
181
  {
197
182
  return this;
198
183
  }
199
184
 
200
185
  /// Get a random-access iterator for one past the last element.
201
- const_iterator end() const BOOST_ASIO_NOEXCEPT
186
+ const_iterator end() const noexcept
202
187
  {
203
188
  return begin() + 1;
204
189
  }
@@ -229,21 +214,21 @@ class const_buffer
229
214
  {
230
215
  public:
231
216
  /// Construct an empty buffer.
232
- const_buffer() BOOST_ASIO_NOEXCEPT
217
+ const_buffer() noexcept
233
218
  : data_(0),
234
219
  size_(0)
235
220
  {
236
221
  }
237
222
 
238
223
  /// Construct a buffer to represent a given memory range.
239
- const_buffer(const void* data, std::size_t size) BOOST_ASIO_NOEXCEPT
224
+ const_buffer(const void* data, std::size_t size) noexcept
240
225
  : data_(data),
241
226
  size_(size)
242
227
  {
243
228
  }
244
229
 
245
230
  /// Construct a non-modifiable buffer from a modifiable one.
246
- const_buffer(const mutable_buffer& b) BOOST_ASIO_NOEXCEPT
231
+ const_buffer(const mutable_buffer& b) noexcept
247
232
  : data_(b.data()),
248
233
  size_(b.size())
249
234
  #if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
@@ -268,7 +253,7 @@ public:
268
253
  #endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
269
254
 
270
255
  /// Get a pointer to the beginning of the memory range.
271
- const void* data() const BOOST_ASIO_NOEXCEPT
256
+ const void* data() const noexcept
272
257
  {
273
258
  #if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
274
259
  if (size_ && debug_check_)
@@ -278,13 +263,13 @@ public:
278
263
  }
279
264
 
280
265
  /// Get the size of the memory range.
281
- std::size_t size() const BOOST_ASIO_NOEXCEPT
266
+ std::size_t size() const noexcept
282
267
  {
283
268
  return size_;
284
269
  }
285
270
 
286
271
  /// Move the start of the buffer by the specified number of bytes.
287
- const_buffer& operator+=(std::size_t n) BOOST_ASIO_NOEXCEPT
272
+ const_buffer& operator+=(std::size_t n) noexcept
288
273
  {
289
274
  std::size_t offset = n < size_ ? n : size_;
290
275
  data_ = static_cast<const char*>(data_) + offset;
@@ -316,7 +301,7 @@ public:
316
301
  typedef const const_buffer* const_iterator;
317
302
 
318
303
  /// Construct to represent a given memory range.
319
- const_buffers_1(const void* data, std::size_t size) BOOST_ASIO_NOEXCEPT
304
+ const_buffers_1(const void* data, std::size_t size) noexcept
320
305
  : const_buffer(data, size)
321
306
  {
322
307
  }
@@ -330,19 +315,19 @@ public:
330
315
  #endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
331
316
 
332
317
  /// Construct to represent a single non-modifiable buffer.
333
- explicit const_buffers_1(const const_buffer& b) BOOST_ASIO_NOEXCEPT
318
+ explicit const_buffers_1(const const_buffer& b) noexcept
334
319
  : const_buffer(b)
335
320
  {
336
321
  }
337
322
 
338
323
  /// Get a random-access iterator to the first element.
339
- const_iterator begin() const BOOST_ASIO_NOEXCEPT
324
+ const_iterator begin() const noexcept
340
325
  {
341
326
  return this;
342
327
  }
343
328
 
344
329
  /// Get a random-access iterator for one past the last element.
345
- const_iterator end() const BOOST_ASIO_NOEXCEPT
330
+ const_iterator end() const noexcept
346
331
  {
347
332
  return begin() + 1;
348
333
  }
@@ -363,13 +348,13 @@ public:
363
348
  typedef const mutable_buffer* const_iterator;
364
349
 
365
350
  /// Get a random-access iterator to the first element.
366
- const_iterator begin() const BOOST_ASIO_NOEXCEPT
351
+ const_iterator begin() const noexcept
367
352
  {
368
353
  return &buf_;
369
354
  }
370
355
 
371
356
  /// Get a random-access iterator for one past the last element.
372
- const_iterator end() const BOOST_ASIO_NOEXCEPT
357
+ const_iterator end() const noexcept
373
358
  {
374
359
  return &buf_;
375
360
  }
@@ -388,9 +373,9 @@ private:
388
373
  /// Get an iterator to the first element in a buffer sequence.
389
374
  template <typename MutableBuffer>
390
375
  inline const mutable_buffer* buffer_sequence_begin(const MutableBuffer& b,
391
- typename constraint<
376
+ constraint_t<
392
377
  is_convertible<const MutableBuffer*, const mutable_buffer*>::value
393
- >::type = 0) BOOST_ASIO_NOEXCEPT
378
+ > = 0) noexcept
394
379
  {
395
380
  return static_cast<const mutable_buffer*>(detail::addressof(b));
396
381
  }
@@ -398,22 +383,20 @@ inline const mutable_buffer* buffer_sequence_begin(const MutableBuffer& b,
398
383
  /// Get an iterator to the first element in a buffer sequence.
399
384
  template <typename ConstBuffer>
400
385
  inline const const_buffer* buffer_sequence_begin(const ConstBuffer& b,
401
- typename constraint<
386
+ constraint_t<
402
387
  is_convertible<const ConstBuffer*, const const_buffer*>::value
403
- >::type = 0) BOOST_ASIO_NOEXCEPT
388
+ > = 0) noexcept
404
389
  {
405
390
  return static_cast<const const_buffer*>(detail::addressof(b));
406
391
  }
407
392
 
408
- #if defined(BOOST_ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION)
409
-
410
393
  /// Get an iterator to the first element in a buffer sequence.
411
394
  template <typename C>
412
395
  inline auto buffer_sequence_begin(C& c,
413
- typename constraint<
396
+ constraint_t<
414
397
  !is_convertible<const C*, const mutable_buffer*>::value
415
398
  && !is_convertible<const C*, const const_buffer*>::value
416
- >::type = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.begin())
399
+ > = 0) noexcept -> decltype(c.begin())
417
400
  {
418
401
  return c.begin();
419
402
  }
@@ -421,38 +404,14 @@ inline auto buffer_sequence_begin(C& c,
421
404
  /// Get an iterator to the first element in a buffer sequence.
422
405
  template <typename C>
423
406
  inline auto buffer_sequence_begin(const C& c,
424
- typename constraint<
425
- !is_convertible<const C*, const mutable_buffer*>::value
426
- && !is_convertible<const C*, const const_buffer*>::value
427
- >::type = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.begin())
428
- {
429
- return c.begin();
430
- }
431
-
432
- #else // defined(BOOST_ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION)
433
-
434
- template <typename C>
435
- inline typename C::iterator buffer_sequence_begin(C& c,
436
- typename constraint<
437
- !is_convertible<const C*, const mutable_buffer*>::value
438
- && !is_convertible<const C*, const const_buffer*>::value
439
- >::type = 0) BOOST_ASIO_NOEXCEPT
440
- {
441
- return c.begin();
442
- }
443
-
444
- template <typename C>
445
- inline typename C::const_iterator buffer_sequence_begin(const C& c,
446
- typename constraint<
407
+ constraint_t<
447
408
  !is_convertible<const C*, const mutable_buffer*>::value
448
409
  && !is_convertible<const C*, const const_buffer*>::value
449
- >::type = 0) BOOST_ASIO_NOEXCEPT
410
+ > = 0) noexcept -> decltype(c.begin())
450
411
  {
451
412
  return c.begin();
452
413
  }
453
414
 
454
- #endif // defined(BOOST_ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION)
455
-
456
415
  /*@}*/
457
416
 
458
417
  /** @defgroup buffer_sequence_end boost::asio::buffer_sequence_end
@@ -465,9 +424,9 @@ inline typename C::const_iterator buffer_sequence_begin(const C& c,
465
424
  /// Get an iterator to one past the end element in a buffer sequence.
466
425
  template <typename MutableBuffer>
467
426
  inline const mutable_buffer* buffer_sequence_end(const MutableBuffer& b,
468
- typename constraint<
427
+ constraint_t<
469
428
  is_convertible<const MutableBuffer*, const mutable_buffer*>::value
470
- >::type = 0) BOOST_ASIO_NOEXCEPT
429
+ > = 0) noexcept
471
430
  {
472
431
  return static_cast<const mutable_buffer*>(detail::addressof(b)) + 1;
473
432
  }
@@ -475,22 +434,20 @@ inline const mutable_buffer* buffer_sequence_end(const MutableBuffer& b,
475
434
  /// Get an iterator to one past the end element in a buffer sequence.
476
435
  template <typename ConstBuffer>
477
436
  inline const const_buffer* buffer_sequence_end(const ConstBuffer& b,
478
- typename constraint<
437
+ constraint_t<
479
438
  is_convertible<const ConstBuffer*, const const_buffer*>::value
480
- >::type = 0) BOOST_ASIO_NOEXCEPT
439
+ > = 0) noexcept
481
440
  {
482
441
  return static_cast<const const_buffer*>(detail::addressof(b)) + 1;
483
442
  }
484
443
 
485
- #if defined(BOOST_ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION)
486
-
487
444
  /// Get an iterator to one past the end element in a buffer sequence.
488
445
  template <typename C>
489
446
  inline auto buffer_sequence_end(C& c,
490
- typename constraint<
447
+ constraint_t<
491
448
  !is_convertible<const C*, const mutable_buffer*>::value
492
449
  && !is_convertible<const C*, const const_buffer*>::value
493
- >::type = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.end())
450
+ > = 0) noexcept -> decltype(c.end())
494
451
  {
495
452
  return c.end();
496
453
  }
@@ -498,38 +455,14 @@ inline auto buffer_sequence_end(C& c,
498
455
  /// Get an iterator to one past the end element in a buffer sequence.
499
456
  template <typename C>
500
457
  inline auto buffer_sequence_end(const C& c,
501
- typename constraint<
502
- !is_convertible<const C*, const mutable_buffer*>::value
503
- && !is_convertible<const C*, const const_buffer*>::value
504
- >::type = 0) BOOST_ASIO_NOEXCEPT -> decltype(c.end())
505
- {
506
- return c.end();
507
- }
508
-
509
- #else // defined(BOOST_ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION)
510
-
511
- template <typename C>
512
- inline typename C::iterator buffer_sequence_end(C& c,
513
- typename constraint<
458
+ constraint_t<
514
459
  !is_convertible<const C*, const mutable_buffer*>::value
515
460
  && !is_convertible<const C*, const const_buffer*>::value
516
- >::type = 0) BOOST_ASIO_NOEXCEPT
461
+ > = 0) noexcept -> decltype(c.end())
517
462
  {
518
463
  return c.end();
519
464
  }
520
465
 
521
- template <typename C>
522
- inline typename C::const_iterator buffer_sequence_end(const C& c,
523
- typename constraint<
524
- !is_convertible<const C*, const mutable_buffer*>::value
525
- && !is_convertible<const C*, const const_buffer*>::value
526
- >::type = 0) BOOST_ASIO_NOEXCEPT
527
- {
528
- return c.end();
529
- }
530
-
531
- #endif // defined(BOOST_ASIO_HAS_DECLTYPE) || defined(GENERATING_DOCUMENTATION)
532
-
533
466
  /*@}*/
534
467
 
535
468
  namespace detail {
@@ -541,25 +474,25 @@ struct multiple_buffers {};
541
474
  // Helper trait to detect single buffers.
542
475
  template <typename BufferSequence>
543
476
  struct buffer_sequence_cardinality :
544
- conditional<
477
+ conditional_t<
545
478
  is_same<BufferSequence, mutable_buffer>::value
546
479
  #if !defined(BOOST_ASIO_NO_DEPRECATED)
547
480
  || is_same<BufferSequence, mutable_buffers_1>::value
548
481
  || is_same<BufferSequence, const_buffers_1>::value
549
482
  #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
550
483
  || is_same<BufferSequence, const_buffer>::value,
551
- one_buffer, multiple_buffers>::type {};
484
+ one_buffer, multiple_buffers> {};
552
485
 
553
486
  template <typename Iterator>
554
487
  inline std::size_t buffer_size(one_buffer,
555
- Iterator begin, Iterator) BOOST_ASIO_NOEXCEPT
488
+ Iterator begin, Iterator) noexcept
556
489
  {
557
490
  return const_buffer(*begin).size();
558
491
  }
559
492
 
560
493
  template <typename Iterator>
561
494
  inline std::size_t buffer_size(multiple_buffers,
562
- Iterator begin, Iterator end) BOOST_ASIO_NOEXCEPT
495
+ Iterator begin, Iterator end) noexcept
563
496
  {
564
497
  std::size_t total_buffer_size = 0;
565
498
 
@@ -594,7 +527,7 @@ inline std::size_t buffer_size(multiple_buffers,
594
527
  * ConstBufferSequence or @c MutableBufferSequence type requirements.
595
528
  */
596
529
  template <typename BufferSequence>
597
- inline std::size_t buffer_size(const BufferSequence& b) BOOST_ASIO_NOEXCEPT
530
+ inline std::size_t buffer_size(const BufferSequence& b) noexcept
598
531
  {
599
532
  return detail::buffer_size(
600
533
  detail::buffer_sequence_cardinality<BufferSequence>(),
@@ -629,14 +562,14 @@ inline std::size_t buffer_size(const BufferSequence& b) BOOST_ASIO_NOEXCEPT
629
562
 
630
563
  /// Cast a non-modifiable buffer to a specified pointer to POD type.
631
564
  template <typename PointerToPodType>
632
- inline PointerToPodType buffer_cast(const mutable_buffer& b) BOOST_ASIO_NOEXCEPT
565
+ inline PointerToPodType buffer_cast(const mutable_buffer& b) noexcept
633
566
  {
634
567
  return static_cast<PointerToPodType>(b.data());
635
568
  }
636
569
 
637
570
  /// Cast a non-modifiable buffer to a specified pointer to POD type.
638
571
  template <typename PointerToPodType>
639
- inline PointerToPodType buffer_cast(const const_buffer& b) BOOST_ASIO_NOEXCEPT
572
+ inline PointerToPodType buffer_cast(const const_buffer& b) noexcept
640
573
  {
641
574
  return static_cast<PointerToPodType>(b.data());
642
575
  }
@@ -650,7 +583,7 @@ inline PointerToPodType buffer_cast(const const_buffer& b) BOOST_ASIO_NOEXCEPT
650
583
  * @relates mutable_buffer
651
584
  */
652
585
  inline mutable_buffer operator+(const mutable_buffer& b,
653
- std::size_t n) BOOST_ASIO_NOEXCEPT
586
+ std::size_t n) noexcept
654
587
  {
655
588
  std::size_t offset = n < b.size() ? n : b.size();
656
589
  char* new_data = static_cast<char*>(b.data()) + offset;
@@ -667,7 +600,7 @@ inline mutable_buffer operator+(const mutable_buffer& b,
667
600
  * @relates mutable_buffer
668
601
  */
669
602
  inline mutable_buffer operator+(std::size_t n,
670
- const mutable_buffer& b) BOOST_ASIO_NOEXCEPT
603
+ const mutable_buffer& b) noexcept
671
604
  {
672
605
  return b + n;
673
606
  }
@@ -677,7 +610,7 @@ inline mutable_buffer operator+(std::size_t n,
677
610
  * @relates const_buffer
678
611
  */
679
612
  inline const_buffer operator+(const const_buffer& b,
680
- std::size_t n) BOOST_ASIO_NOEXCEPT
613
+ std::size_t n) noexcept
681
614
  {
682
615
  std::size_t offset = n < b.size() ? n : b.size();
683
616
  const char* new_data = static_cast<const char*>(b.data()) + offset;
@@ -694,7 +627,7 @@ inline const_buffer operator+(const const_buffer& b,
694
627
  * @relates const_buffer
695
628
  */
696
629
  inline const_buffer operator+(std::size_t n,
697
- const const_buffer& b) BOOST_ASIO_NOEXCEPT
630
+ const const_buffer& b) noexcept
698
631
  {
699
632
  return b + n;
700
633
  }
@@ -893,6 +826,25 @@ private:
893
826
  * bufs2.push_back(boost::asio::buffer(d2));
894
827
  * bufs2.push_back(boost::asio::buffer(d3));
895
828
  * bytes_transferred = sock.send(bufs2); @endcode
829
+ *
830
+ * @par Buffer Literals
831
+ *
832
+ * The `_buf` literal suffix, defined in namespace
833
+ * <tt>boost::asio::buffer_literals</tt>, may be used to create @c const_buffer
834
+ * objects from string, binary integer, and hexadecimal integer literals.
835
+ * For example:
836
+ *
837
+ * @code
838
+ * using namespace boost::asio::buffer_literals;
839
+ *
840
+ * boost::asio::const_buffer b1 = "hello"_buf;
841
+ * boost::asio::const_buffer b2 = 0xdeadbeef_buf;
842
+ * boost::asio::const_buffer b3 = 0x0123456789abcdef0123456789abcdef_buf;
843
+ * boost::asio::const_buffer b4 = 0b1010101011001100_buf; @endcode
844
+ *
845
+ * Note that the memory associated with a buffer literal is valid for the
846
+ * lifetime of the program. This means that the buffer can be safely used with
847
+ * asynchronous operations.
896
848
  */
897
849
  /*@{*/
898
850
 
@@ -909,7 +861,7 @@ private:
909
861
  * @returns <tt>mutable_buffer(b)</tt>.
910
862
  */
911
863
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
912
- const mutable_buffer& b) BOOST_ASIO_NOEXCEPT
864
+ const mutable_buffer& b) noexcept
913
865
  {
914
866
  return BOOST_ASIO_MUTABLE_BUFFER(b);
915
867
  }
@@ -923,7 +875,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
923
875
  */
924
876
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
925
877
  const mutable_buffer& b,
926
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
878
+ std::size_t max_size_in_bytes) noexcept
927
879
  {
928
880
  return BOOST_ASIO_MUTABLE_BUFFER(
929
881
  mutable_buffer(b.data(),
@@ -940,7 +892,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
940
892
  * @returns <tt>const_buffer(b)</tt>.
941
893
  */
942
894
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
943
- const const_buffer& b) BOOST_ASIO_NOEXCEPT
895
+ const const_buffer& b) noexcept
944
896
  {
945
897
  return BOOST_ASIO_CONST_BUFFER(b);
946
898
  }
@@ -954,7 +906,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
954
906
  */
955
907
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
956
908
  const const_buffer& b,
957
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
909
+ std::size_t max_size_in_bytes) noexcept
958
910
  {
959
911
  return BOOST_ASIO_CONST_BUFFER(b.data(),
960
912
  b.size() < max_size_in_bytes
@@ -970,7 +922,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
970
922
  * @returns <tt>mutable_buffer(data, size_in_bytes)</tt>.
971
923
  */
972
924
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
973
- void* data, std::size_t size_in_bytes) BOOST_ASIO_NOEXCEPT
925
+ void* data, std::size_t size_in_bytes) noexcept
974
926
  {
975
927
  return BOOST_ASIO_MUTABLE_BUFFER(data, size_in_bytes);
976
928
  }
@@ -980,7 +932,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
980
932
  * @returns <tt>const_buffer(data, size_in_bytes)</tt>.
981
933
  */
982
934
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
983
- const void* data, std::size_t size_in_bytes) BOOST_ASIO_NOEXCEPT
935
+ const void* data, std::size_t size_in_bytes) noexcept
984
936
  {
985
937
  return BOOST_ASIO_CONST_BUFFER(data, size_in_bytes);
986
938
  }
@@ -994,11 +946,11 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
994
946
  */
995
947
  template <typename PodType, std::size_t N>
996
948
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
997
- PodType (&data)[N]) BOOST_ASIO_NOEXCEPT
949
+ PodType (&data)[N]) noexcept
998
950
  {
999
951
  return BOOST_ASIO_MUTABLE_BUFFER(data, N * sizeof(PodType));
1000
952
  }
1001
-
953
+
1002
954
  /// Create a new modifiable buffer that represents the given POD array.
1003
955
  /**
1004
956
  * @returns A mutable_buffer value equivalent to:
@@ -1009,13 +961,13 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1009
961
  template <typename PodType, std::size_t N>
1010
962
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1011
963
  PodType (&data)[N],
1012
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
964
+ std::size_t max_size_in_bytes) noexcept
1013
965
  {
1014
966
  return BOOST_ASIO_MUTABLE_BUFFER(data,
1015
967
  N * sizeof(PodType) < max_size_in_bytes
1016
968
  ? N * sizeof(PodType) : max_size_in_bytes);
1017
969
  }
1018
-
970
+
1019
971
  /// Create a new non-modifiable buffer that represents the given POD array.
1020
972
  /**
1021
973
  * @returns A const_buffer value equivalent to:
@@ -1025,7 +977,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1025
977
  */
1026
978
  template <typename PodType, std::size_t N>
1027
979
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1028
- const PodType (&data)[N]) BOOST_ASIO_NOEXCEPT
980
+ const PodType (&data)[N]) noexcept
1029
981
  {
1030
982
  return BOOST_ASIO_CONST_BUFFER(data, N * sizeof(PodType));
1031
983
  }
@@ -1040,85 +992,13 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1040
992
  template <typename PodType, std::size_t N>
1041
993
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1042
994
  const PodType (&data)[N],
1043
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
995
+ std::size_t max_size_in_bytes) noexcept
1044
996
  {
1045
997
  return BOOST_ASIO_CONST_BUFFER(data,
1046
998
  N * sizeof(PodType) < max_size_in_bytes
1047
999
  ? N * sizeof(PodType) : max_size_in_bytes);
1048
1000
  }
1049
1001
 
1050
- #if defined(BOOST_ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
1051
-
1052
- // Borland C++ and Sun Studio think the overloads:
1053
- //
1054
- // unspecified buffer(boost::array<PodType, N>& array ...);
1055
- //
1056
- // and
1057
- //
1058
- // unspecified buffer(boost::array<const PodType, N>& array ...);
1059
- //
1060
- // are ambiguous. This will be worked around by using a buffer_types traits
1061
- // class that contains typedefs for the appropriate buffer and container
1062
- // classes, based on whether PodType is const or non-const.
1063
-
1064
- namespace detail {
1065
-
1066
- template <bool IsConst>
1067
- struct buffer_types_base;
1068
-
1069
- template <>
1070
- struct buffer_types_base<false>
1071
- {
1072
- typedef mutable_buffer buffer_type;
1073
- typedef BOOST_ASIO_MUTABLE_BUFFER container_type;
1074
- };
1075
-
1076
- template <>
1077
- struct buffer_types_base<true>
1078
- {
1079
- typedef const_buffer buffer_type;
1080
- typedef BOOST_ASIO_CONST_BUFFER container_type;
1081
- };
1082
-
1083
- template <typename PodType>
1084
- struct buffer_types
1085
- : public buffer_types_base<is_const<PodType>::value>
1086
- {
1087
- };
1088
-
1089
- } // namespace detail
1090
-
1091
- template <typename PodType, std::size_t N>
1092
- BOOST_ASIO_NODISCARD inline
1093
- typename detail::buffer_types<PodType>::container_type
1094
- buffer(boost::array<PodType, N>& data) BOOST_ASIO_NOEXCEPT
1095
- {
1096
- typedef typename boost::asio::detail::buffer_types<PodType>::buffer_type
1097
- buffer_type;
1098
- typedef typename boost::asio::detail::buffer_types<PodType>::container_type
1099
- container_type;
1100
- return container_type(
1101
- buffer_type(data.c_array(), data.size() * sizeof(PodType)));
1102
- }
1103
-
1104
- template <typename PodType, std::size_t N>
1105
- BOOST_ASIO_NODISCARD inline
1106
- typename detail::buffer_types<PodType>::container_type
1107
- buffer(boost::array<PodType, N>& data,
1108
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1109
- {
1110
- typedef typename boost::asio::detail::buffer_types<PodType>::buffer_type
1111
- buffer_type;
1112
- typedef typename boost::asio::detail::buffer_types<PodType>::container_type
1113
- container_type;
1114
- return container_type(
1115
- buffer_type(data.c_array(),
1116
- data.size() * sizeof(PodType) < max_size_in_bytes
1117
- ? data.size() * sizeof(PodType) : max_size_in_bytes));
1118
- }
1119
-
1120
- #else // defined(BOOST_ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
1121
-
1122
1002
  /// Create a new modifiable buffer that represents the given POD array.
1123
1003
  /**
1124
1004
  * @returns A mutable_buffer value equivalent to:
@@ -1128,7 +1008,7 @@ buffer(boost::array<PodType, N>& data,
1128
1008
  */
1129
1009
  template <typename PodType, std::size_t N>
1130
1010
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1131
- boost::array<PodType, N>& data) BOOST_ASIO_NOEXCEPT
1011
+ boost::array<PodType, N>& data) noexcept
1132
1012
  {
1133
1013
  return BOOST_ASIO_MUTABLE_BUFFER(
1134
1014
  data.c_array(), data.size() * sizeof(PodType));
@@ -1144,7 +1024,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1144
1024
  template <typename PodType, std::size_t N>
1145
1025
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1146
1026
  boost::array<PodType, N>& data,
1147
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1027
+ std::size_t max_size_in_bytes) noexcept
1148
1028
  {
1149
1029
  return BOOST_ASIO_MUTABLE_BUFFER(data.c_array(),
1150
1030
  data.size() * sizeof(PodType) < max_size_in_bytes
@@ -1160,7 +1040,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1160
1040
  */
1161
1041
  template <typename PodType, std::size_t N>
1162
1042
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1163
- boost::array<const PodType, N>& data) BOOST_ASIO_NOEXCEPT
1043
+ boost::array<const PodType, N>& data) noexcept
1164
1044
  {
1165
1045
  return BOOST_ASIO_CONST_BUFFER(data.data(), data.size() * sizeof(PodType));
1166
1046
  }
@@ -1175,15 +1055,13 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1175
1055
  template <typename PodType, std::size_t N>
1176
1056
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1177
1057
  boost::array<const PodType, N>& data,
1178
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1058
+ std::size_t max_size_in_bytes) noexcept
1179
1059
  {
1180
1060
  return BOOST_ASIO_CONST_BUFFER(data.data(),
1181
1061
  data.size() * sizeof(PodType) < max_size_in_bytes
1182
1062
  ? data.size() * sizeof(PodType) : max_size_in_bytes);
1183
1063
  }
1184
1064
 
1185
- #endif // defined(BOOST_ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
1186
-
1187
1065
  /// Create a new non-modifiable buffer that represents the given POD array.
1188
1066
  /**
1189
1067
  * @returns A const_buffer value equivalent to:
@@ -1193,7 +1071,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1193
1071
  */
1194
1072
  template <typename PodType, std::size_t N>
1195
1073
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1196
- const boost::array<PodType, N>& data) BOOST_ASIO_NOEXCEPT
1074
+ const boost::array<PodType, N>& data) noexcept
1197
1075
  {
1198
1076
  return BOOST_ASIO_CONST_BUFFER(data.data(), data.size() * sizeof(PodType));
1199
1077
  }
@@ -1208,15 +1086,13 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1208
1086
  template <typename PodType, std::size_t N>
1209
1087
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1210
1088
  const boost::array<PodType, N>& data,
1211
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1089
+ std::size_t max_size_in_bytes) noexcept
1212
1090
  {
1213
1091
  return BOOST_ASIO_CONST_BUFFER(data.data(),
1214
1092
  data.size() * sizeof(PodType) < max_size_in_bytes
1215
1093
  ? data.size() * sizeof(PodType) : max_size_in_bytes);
1216
1094
  }
1217
1095
 
1218
- #if defined(BOOST_ASIO_HAS_STD_ARRAY) || defined(GENERATING_DOCUMENTATION)
1219
-
1220
1096
  /// Create a new modifiable buffer that represents the given POD array.
1221
1097
  /**
1222
1098
  * @returns A mutable_buffer value equivalent to:
@@ -1226,7 +1102,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1226
1102
  */
1227
1103
  template <typename PodType, std::size_t N>
1228
1104
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1229
- std::array<PodType, N>& data) BOOST_ASIO_NOEXCEPT
1105
+ std::array<PodType, N>& data) noexcept
1230
1106
  {
1231
1107
  return BOOST_ASIO_MUTABLE_BUFFER(data.data(), data.size() * sizeof(PodType));
1232
1108
  }
@@ -1241,7 +1117,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1241
1117
  template <typename PodType, std::size_t N>
1242
1118
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1243
1119
  std::array<PodType, N>& data,
1244
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1120
+ std::size_t max_size_in_bytes) noexcept
1245
1121
  {
1246
1122
  return BOOST_ASIO_MUTABLE_BUFFER(data.data(),
1247
1123
  data.size() * sizeof(PodType) < max_size_in_bytes
@@ -1257,7 +1133,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1257
1133
  */
1258
1134
  template <typename PodType, std::size_t N>
1259
1135
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1260
- std::array<const PodType, N>& data) BOOST_ASIO_NOEXCEPT
1136
+ std::array<const PodType, N>& data) noexcept
1261
1137
  {
1262
1138
  return BOOST_ASIO_CONST_BUFFER(data.data(), data.size() * sizeof(PodType));
1263
1139
  }
@@ -1272,7 +1148,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1272
1148
  template <typename PodType, std::size_t N>
1273
1149
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1274
1150
  std::array<const PodType, N>& data,
1275
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1151
+ std::size_t max_size_in_bytes) noexcept
1276
1152
  {
1277
1153
  return BOOST_ASIO_CONST_BUFFER(data.data(),
1278
1154
  data.size() * sizeof(PodType) < max_size_in_bytes
@@ -1288,7 +1164,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1288
1164
  */
1289
1165
  template <typename PodType, std::size_t N>
1290
1166
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1291
- const std::array<PodType, N>& data) BOOST_ASIO_NOEXCEPT
1167
+ const std::array<PodType, N>& data) noexcept
1292
1168
  {
1293
1169
  return BOOST_ASIO_CONST_BUFFER(data.data(), data.size() * sizeof(PodType));
1294
1170
  }
@@ -1303,15 +1179,13 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1303
1179
  template <typename PodType, std::size_t N>
1304
1180
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1305
1181
  const std::array<PodType, N>& data,
1306
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1182
+ std::size_t max_size_in_bytes) noexcept
1307
1183
  {
1308
1184
  return BOOST_ASIO_CONST_BUFFER(data.data(),
1309
1185
  data.size() * sizeof(PodType) < max_size_in_bytes
1310
1186
  ? data.size() * sizeof(PodType) : max_size_in_bytes);
1311
1187
  }
1312
1188
 
1313
- #endif // defined(BOOST_ASIO_HAS_STD_ARRAY) || defined(GENERATING_DOCUMENTATION)
1314
-
1315
1189
  /// Create a new modifiable buffer that represents the given POD vector.
1316
1190
  /**
1317
1191
  * @returns A mutable_buffer value equivalent to:
@@ -1324,7 +1198,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1324
1198
  */
1325
1199
  template <typename PodType, typename Allocator>
1326
1200
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1327
- std::vector<PodType, Allocator>& data) BOOST_ASIO_NOEXCEPT
1201
+ std::vector<PodType, Allocator>& data) noexcept
1328
1202
  {
1329
1203
  return BOOST_ASIO_MUTABLE_BUFFER(
1330
1204
  data.size() ? &data[0] : 0, data.size() * sizeof(PodType)
@@ -1349,7 +1223,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1349
1223
  template <typename PodType, typename Allocator>
1350
1224
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1351
1225
  std::vector<PodType, Allocator>& data,
1352
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1226
+ std::size_t max_size_in_bytes) noexcept
1353
1227
  {
1354
1228
  return BOOST_ASIO_MUTABLE_BUFFER(data.size() ? &data[0] : 0,
1355
1229
  data.size() * sizeof(PodType) < max_size_in_bytes
@@ -1374,7 +1248,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1374
1248
  */
1375
1249
  template <typename PodType, typename Allocator>
1376
1250
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1377
- const std::vector<PodType, Allocator>& data) BOOST_ASIO_NOEXCEPT
1251
+ const std::vector<PodType, Allocator>& data) noexcept
1378
1252
  {
1379
1253
  return BOOST_ASIO_CONST_BUFFER(
1380
1254
  data.size() ? &data[0] : 0, data.size() * sizeof(PodType)
@@ -1399,7 +1273,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1399
1273
  template <typename PodType, typename Allocator>
1400
1274
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1401
1275
  const std::vector<PodType, Allocator>& data,
1402
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1276
+ std::size_t max_size_in_bytes) noexcept
1403
1277
  {
1404
1278
  return BOOST_ASIO_CONST_BUFFER(data.size() ? &data[0] : 0,
1405
1279
  data.size() * sizeof(PodType) < max_size_in_bytes
@@ -1422,7 +1296,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1422
1296
  */
1423
1297
  template <typename Elem, typename Traits, typename Allocator>
1424
1298
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1425
- std::basic_string<Elem, Traits, Allocator>& data) BOOST_ASIO_NOEXCEPT
1299
+ std::basic_string<Elem, Traits, Allocator>& data) noexcept
1426
1300
  {
1427
1301
  return BOOST_ASIO_MUTABLE_BUFFER(data.size() ? &data[0] : 0,
1428
1302
  data.size() * sizeof(Elem)
@@ -1447,7 +1321,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1447
1321
  template <typename Elem, typename Traits, typename Allocator>
1448
1322
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1449
1323
  std::basic_string<Elem, Traits, Allocator>& data,
1450
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1324
+ std::size_t max_size_in_bytes) noexcept
1451
1325
  {
1452
1326
  return BOOST_ASIO_MUTABLE_BUFFER(data.size() ? &data[0] : 0,
1453
1327
  data.size() * sizeof(Elem) < max_size_in_bytes
@@ -1469,7 +1343,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1469
1343
  */
1470
1344
  template <typename Elem, typename Traits, typename Allocator>
1471
1345
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1472
- const std::basic_string<Elem, Traits, Allocator>& data) BOOST_ASIO_NOEXCEPT
1346
+ const std::basic_string<Elem, Traits, Allocator>& data) noexcept
1473
1347
  {
1474
1348
  return BOOST_ASIO_CONST_BUFFER(data.data(), data.size() * sizeof(Elem)
1475
1349
  #if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
@@ -1493,7 +1367,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1493
1367
  template <typename Elem, typename Traits, typename Allocator>
1494
1368
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1495
1369
  const std::basic_string<Elem, Traits, Allocator>& data,
1496
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1370
+ std::size_t max_size_in_bytes) noexcept
1497
1371
  {
1498
1372
  return BOOST_ASIO_CONST_BUFFER(data.data(),
1499
1373
  data.size() * sizeof(Elem) < max_size_in_bytes
@@ -1516,7 +1390,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1516
1390
  */
1517
1391
  template <typename Elem, typename Traits>
1518
1392
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1519
- basic_string_view<Elem, Traits> data) BOOST_ASIO_NOEXCEPT
1393
+ basic_string_view<Elem, Traits> data) noexcept
1520
1394
  {
1521
1395
  return BOOST_ASIO_CONST_BUFFER(data.size() ? &data[0] : 0,
1522
1396
  data.size() * sizeof(Elem)
@@ -1538,7 +1412,7 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1538
1412
  template <typename Elem, typename Traits>
1539
1413
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1540
1414
  basic_string_view<Elem, Traits> data,
1541
- std::size_t max_size_in_bytes) BOOST_ASIO_NOEXCEPT
1415
+ std::size_t max_size_in_bytes) noexcept
1542
1416
  {
1543
1417
  return BOOST_ASIO_CONST_BUFFER(data.size() ? &data[0] : 0,
1544
1418
  data.size() * sizeof(Elem) < max_size_in_bytes
@@ -1564,18 +1438,26 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1564
1438
  template <typename T>
1565
1439
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1566
1440
  T& data,
1567
- typename constraint<
1441
+ constraint_t<
1568
1442
  is_contiguous_iterator<typename T::iterator>::value,
1569
1443
  defaulted_constraint
1570
- >::type = defaulted_constraint(),
1571
- typename constraint<
1444
+ > = defaulted_constraint(),
1445
+ constraint_t<
1446
+ !is_convertible<T, const_buffer>::value,
1447
+ defaulted_constraint
1448
+ > = defaulted_constraint(),
1449
+ constraint_t<
1450
+ !is_convertible<T, mutable_buffer>::value,
1451
+ defaulted_constraint
1452
+ > = defaulted_constraint(),
1453
+ constraint_t<
1572
1454
  !is_const<
1573
- typename remove_reference<
1455
+ remove_reference_t<
1574
1456
  typename std::iterator_traits<typename T::iterator>::reference
1575
- >::type
1457
+ >
1576
1458
  >::value,
1577
1459
  defaulted_constraint
1578
- >::type = defaulted_constraint()) BOOST_ASIO_NOEXCEPT
1460
+ > = defaulted_constraint()) noexcept
1579
1461
  {
1580
1462
  return BOOST_ASIO_MUTABLE_BUFFER(
1581
1463
  data.size() ? detail::to_address(data.begin()) : 0,
@@ -1594,18 +1476,26 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1594
1476
  template <typename T>
1595
1477
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1596
1478
  T& data, std::size_t max_size_in_bytes,
1597
- typename constraint<
1479
+ constraint_t<
1598
1480
  is_contiguous_iterator<typename T::iterator>::value,
1599
1481
  defaulted_constraint
1600
- >::type = defaulted_constraint(),
1601
- typename constraint<
1482
+ > = defaulted_constraint(),
1483
+ constraint_t<
1484
+ !is_convertible<T, const_buffer>::value,
1485
+ defaulted_constraint
1486
+ > = defaulted_constraint(),
1487
+ constraint_t<
1488
+ !is_convertible<T, mutable_buffer>::value,
1489
+ defaulted_constraint
1490
+ > = defaulted_constraint(),
1491
+ constraint_t<
1602
1492
  !is_const<
1603
- typename remove_reference<
1493
+ remove_reference_t<
1604
1494
  typename std::iterator_traits<typename T::iterator>::reference
1605
- >::type
1495
+ >
1606
1496
  >::value,
1607
1497
  defaulted_constraint
1608
- >::type = defaulted_constraint()) BOOST_ASIO_NOEXCEPT
1498
+ > = defaulted_constraint()) noexcept
1609
1499
  {
1610
1500
  return BOOST_ASIO_MUTABLE_BUFFER(
1611
1501
  data.size() ? detail::to_address(data.begin()) : 0,
@@ -1623,18 +1513,26 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
1623
1513
  template <typename T>
1624
1514
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1625
1515
  T& data,
1626
- typename constraint<
1516
+ constraint_t<
1627
1517
  is_contiguous_iterator<typename T::iterator>::value,
1628
1518
  defaulted_constraint
1629
- >::type = defaulted_constraint(),
1630
- typename constraint<
1519
+ > = defaulted_constraint(),
1520
+ constraint_t<
1521
+ !is_convertible<T, const_buffer>::value,
1522
+ defaulted_constraint
1523
+ > = defaulted_constraint(),
1524
+ constraint_t<
1525
+ !is_convertible<T, mutable_buffer>::value,
1526
+ defaulted_constraint
1527
+ > = defaulted_constraint(),
1528
+ constraint_t<
1631
1529
  is_const<
1632
- typename remove_reference<
1530
+ remove_reference_t<
1633
1531
  typename std::iterator_traits<typename T::iterator>::reference
1634
- >::type
1532
+ >
1635
1533
  >::value,
1636
1534
  defaulted_constraint
1637
- >::type = defaulted_constraint()) BOOST_ASIO_NOEXCEPT
1535
+ > = defaulted_constraint()) noexcept
1638
1536
  {
1639
1537
  return BOOST_ASIO_CONST_BUFFER(
1640
1538
  data.size() ? detail::to_address(data.begin()) : 0,
@@ -1653,18 +1551,26 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1653
1551
  template <typename T>
1654
1552
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1655
1553
  T& data, std::size_t max_size_in_bytes,
1656
- typename constraint<
1554
+ constraint_t<
1657
1555
  is_contiguous_iterator<typename T::iterator>::value,
1658
1556
  defaulted_constraint
1659
- >::type = defaulted_constraint(),
1660
- typename constraint<
1557
+ > = defaulted_constraint(),
1558
+ constraint_t<
1559
+ !is_convertible<T, const_buffer>::value,
1560
+ defaulted_constraint
1561
+ > = defaulted_constraint(),
1562
+ constraint_t<
1563
+ !is_convertible<T, mutable_buffer>::value,
1564
+ defaulted_constraint
1565
+ > = defaulted_constraint(),
1566
+ constraint_t<
1661
1567
  is_const<
1662
- typename remove_reference<
1568
+ remove_reference_t<
1663
1569
  typename std::iterator_traits<typename T::iterator>::reference
1664
- >::type
1570
+ >
1665
1571
  >::value,
1666
1572
  defaulted_constraint
1667
- >::type = defaulted_constraint()) BOOST_ASIO_NOEXCEPT
1573
+ > = defaulted_constraint()) noexcept
1668
1574
  {
1669
1575
  return BOOST_ASIO_CONST_BUFFER(
1670
1576
  data.size() ? detail::to_address(data.begin()) : 0,
@@ -1682,10 +1588,18 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1682
1588
  template <typename T>
1683
1589
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1684
1590
  const T& data,
1685
- typename constraint<
1591
+ constraint_t<
1686
1592
  is_contiguous_iterator<typename T::const_iterator>::value,
1687
1593
  defaulted_constraint
1688
- >::type = defaulted_constraint()) BOOST_ASIO_NOEXCEPT
1594
+ > = defaulted_constraint(),
1595
+ constraint_t<
1596
+ !is_convertible<T, const_buffer>::value,
1597
+ defaulted_constraint
1598
+ > = defaulted_constraint(),
1599
+ constraint_t<
1600
+ !is_convertible<T, mutable_buffer>::value,
1601
+ defaulted_constraint
1602
+ > = defaulted_constraint()) noexcept
1689
1603
  {
1690
1604
  return BOOST_ASIO_CONST_BUFFER(
1691
1605
  data.size() ? detail::to_address(data.begin()) : 0,
@@ -1704,10 +1618,18 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1704
1618
  template <typename T>
1705
1619
  BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
1706
1620
  const T& data, std::size_t max_size_in_bytes,
1707
- typename constraint<
1621
+ constraint_t<
1708
1622
  is_contiguous_iterator<typename T::const_iterator>::value,
1709
1623
  defaulted_constraint
1710
- >::type = defaulted_constraint()) BOOST_ASIO_NOEXCEPT
1624
+ > = defaulted_constraint(),
1625
+ constraint_t<
1626
+ !is_convertible<T, const_buffer>::value,
1627
+ defaulted_constraint
1628
+ > = defaulted_constraint(),
1629
+ constraint_t<
1630
+ !is_convertible<T, mutable_buffer>::value,
1631
+ defaulted_constraint
1632
+ > = defaulted_constraint()) noexcept
1711
1633
  {
1712
1634
  return BOOST_ASIO_CONST_BUFFER(
1713
1635
  data.size() ? detail::to_address(data.begin()) : 0,
@@ -1747,7 +1669,7 @@ public:
1747
1669
  */
1748
1670
  explicit dynamic_string_buffer(std::basic_string<Elem, Traits, Allocator>& s,
1749
1671
  std::size_t maximum_size =
1750
- (std::numeric_limits<std::size_t>::max)()) BOOST_ASIO_NOEXCEPT
1672
+ (std::numeric_limits<std::size_t>::max)()) noexcept
1751
1673
  : string_(s),
1752
1674
  #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
1753
1675
  size_((std::numeric_limits<std::size_t>::max)()),
@@ -1757,7 +1679,7 @@ public:
1757
1679
  }
1758
1680
 
1759
1681
  /// @b DynamicBuffer_v2: Copy construct a dynamic buffer.
1760
- dynamic_string_buffer(const dynamic_string_buffer& other) BOOST_ASIO_NOEXCEPT
1682
+ dynamic_string_buffer(const dynamic_string_buffer& other) noexcept
1761
1683
  : string_(other.string_),
1762
1684
  #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
1763
1685
  size_(other.size_),
@@ -1766,9 +1688,8 @@ public:
1766
1688
  {
1767
1689
  }
1768
1690
 
1769
- #if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
1770
1691
  /// Move construct a dynamic buffer.
1771
- dynamic_string_buffer(dynamic_string_buffer&& other) BOOST_ASIO_NOEXCEPT
1692
+ dynamic_string_buffer(dynamic_string_buffer&& other) noexcept
1772
1693
  : string_(other.string_),
1773
1694
  #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
1774
1695
  size_(other.size_),
@@ -1776,7 +1697,6 @@ public:
1776
1697
  max_size_(other.max_size_)
1777
1698
  {
1778
1699
  }
1779
- #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
1780
1700
 
1781
1701
  /// @b DynamicBuffer_v1: Get the size of the input sequence.
1782
1702
  /// @b DynamicBuffer_v2: Get the current size of the underlying memory.
@@ -1785,7 +1705,7 @@ public:
1785
1705
  * @b DynamicBuffer_v2: The current size of the underlying string if less than
1786
1706
  * max_size(). Otherwise returns max_size().
1787
1707
  */
1788
- std::size_t size() const BOOST_ASIO_NOEXCEPT
1708
+ std::size_t size() const noexcept
1789
1709
  {
1790
1710
  #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
1791
1711
  if (size_ != (std::numeric_limits<std::size_t>::max)())
@@ -1798,7 +1718,7 @@ public:
1798
1718
  /**
1799
1719
  * @returns The allowed maximum size of the underlying memory.
1800
1720
  */
1801
- std::size_t max_size() const BOOST_ASIO_NOEXCEPT
1721
+ std::size_t max_size() const noexcept
1802
1722
  {
1803
1723
  return max_size_;
1804
1724
  }
@@ -1809,7 +1729,7 @@ public:
1809
1729
  * @returns The current capacity of the underlying string if less than
1810
1730
  * max_size(). Otherwise returns max_size().
1811
1731
  */
1812
- std::size_t capacity() const BOOST_ASIO_NOEXCEPT
1732
+ std::size_t capacity() const noexcept
1813
1733
  {
1814
1734
  return (std::min)(string_.capacity(), max_size());
1815
1735
  }
@@ -1825,7 +1745,7 @@ public:
1825
1745
  * @note The returned object is invalidated by any @c dynamic_string_buffer
1826
1746
  * or @c basic_string member function that resizes or erases the string.
1827
1747
  */
1828
- const_buffers_type data() const BOOST_ASIO_NOEXCEPT
1748
+ const_buffers_type data() const noexcept
1829
1749
  {
1830
1750
  return const_buffers_type(boost::asio::buffer(string_, size_));
1831
1751
  }
@@ -1846,7 +1766,7 @@ public:
1846
1766
  * @note The returned object is invalidated by any @c dynamic_string_buffer
1847
1767
  * or @c basic_string member function that resizes or erases the string.
1848
1768
  */
1849
- mutable_buffers_type data(std::size_t pos, std::size_t n) BOOST_ASIO_NOEXCEPT
1769
+ mutable_buffers_type data(std::size_t pos, std::size_t n) noexcept
1850
1770
  {
1851
1771
  return mutable_buffers_type(boost::asio::buffer(
1852
1772
  boost::asio::buffer(string_, max_size_) + pos, n));
@@ -1865,7 +1785,7 @@ public:
1865
1785
  * or @c basic_string member function that resizes or erases the string.
1866
1786
  */
1867
1787
  const_buffers_type data(std::size_t pos,
1868
- std::size_t n) const BOOST_ASIO_NOEXCEPT
1788
+ std::size_t n) const noexcept
1869
1789
  {
1870
1790
  return const_buffers_type(boost::asio::buffer(
1871
1791
  boost::asio::buffer(string_, max_size_) + pos, n));
@@ -2015,7 +1935,7 @@ public:
2015
1935
  */
2016
1936
  explicit dynamic_vector_buffer(std::vector<Elem, Allocator>& v,
2017
1937
  std::size_t maximum_size =
2018
- (std::numeric_limits<std::size_t>::max)()) BOOST_ASIO_NOEXCEPT
1938
+ (std::numeric_limits<std::size_t>::max)()) noexcept
2019
1939
  : vector_(v),
2020
1940
  #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
2021
1941
  size_((std::numeric_limits<std::size_t>::max)()),
@@ -2025,7 +1945,7 @@ public:
2025
1945
  }
2026
1946
 
2027
1947
  /// @b DynamicBuffer_v2: Copy construct a dynamic buffer.
2028
- dynamic_vector_buffer(const dynamic_vector_buffer& other) BOOST_ASIO_NOEXCEPT
1948
+ dynamic_vector_buffer(const dynamic_vector_buffer& other) noexcept
2029
1949
  : vector_(other.vector_),
2030
1950
  #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
2031
1951
  size_(other.size_),
@@ -2034,9 +1954,8 @@ public:
2034
1954
  {
2035
1955
  }
2036
1956
 
2037
- #if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
2038
1957
  /// Move construct a dynamic buffer.
2039
- dynamic_vector_buffer(dynamic_vector_buffer&& other) BOOST_ASIO_NOEXCEPT
1958
+ dynamic_vector_buffer(dynamic_vector_buffer&& other) noexcept
2040
1959
  : vector_(other.vector_),
2041
1960
  #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
2042
1961
  size_(other.size_),
@@ -2044,7 +1963,6 @@ public:
2044
1963
  max_size_(other.max_size_)
2045
1964
  {
2046
1965
  }
2047
- #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
2048
1966
 
2049
1967
  /// @b DynamicBuffer_v1: Get the size of the input sequence.
2050
1968
  /// @b DynamicBuffer_v2: Get the current size of the underlying memory.
@@ -2053,7 +1971,7 @@ public:
2053
1971
  * @b DynamicBuffer_v2: The current size of the underlying vector if less than
2054
1972
  * max_size(). Otherwise returns max_size().
2055
1973
  */
2056
- std::size_t size() const BOOST_ASIO_NOEXCEPT
1974
+ std::size_t size() const noexcept
2057
1975
  {
2058
1976
  #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
2059
1977
  if (size_ != (std::numeric_limits<std::size_t>::max)())
@@ -2068,7 +1986,7 @@ public:
2068
1986
  * of the input sequence and output sequence. @b DynamicBuffer_v2: The allowed
2069
1987
  * maximum size of the underlying memory.
2070
1988
  */
2071
- std::size_t max_size() const BOOST_ASIO_NOEXCEPT
1989
+ std::size_t max_size() const noexcept
2072
1990
  {
2073
1991
  return max_size_;
2074
1992
  }
@@ -2081,7 +1999,7 @@ public:
2081
1999
  * The current capacity of the underlying vector if less than max_size().
2082
2000
  * Otherwise returns max_size().
2083
2001
  */
2084
- std::size_t capacity() const BOOST_ASIO_NOEXCEPT
2002
+ std::size_t capacity() const noexcept
2085
2003
  {
2086
2004
  return (std::min)(vector_.capacity(), max_size());
2087
2005
  }
@@ -2098,7 +2016,7 @@ public:
2098
2016
  * or @c vector member function that modifies the input sequence or output
2099
2017
  * sequence.
2100
2018
  */
2101
- const_buffers_type data() const BOOST_ASIO_NOEXCEPT
2019
+ const_buffers_type data() const noexcept
2102
2020
  {
2103
2021
  return const_buffers_type(boost::asio::buffer(vector_, size_));
2104
2022
  }
@@ -2119,7 +2037,7 @@ public:
2119
2037
  * @note The returned object is invalidated by any @c dynamic_vector_buffer
2120
2038
  * or @c vector member function that resizes or erases the vector.
2121
2039
  */
2122
- mutable_buffers_type data(std::size_t pos, std::size_t n) BOOST_ASIO_NOEXCEPT
2040
+ mutable_buffers_type data(std::size_t pos, std::size_t n) noexcept
2123
2041
  {
2124
2042
  return mutable_buffers_type(boost::asio::buffer(
2125
2043
  boost::asio::buffer(vector_, max_size_) + pos, n));
@@ -2138,7 +2056,7 @@ public:
2138
2056
  * or @c vector member function that resizes or erases the vector.
2139
2057
  */
2140
2058
  const_buffers_type data(std::size_t pos,
2141
- std::size_t n) const BOOST_ASIO_NOEXCEPT
2059
+ std::size_t n) const noexcept
2142
2060
  {
2143
2061
  return const_buffers_type(boost::asio::buffer(
2144
2062
  boost::asio::buffer(vector_, max_size_) + pos, n));
@@ -2275,7 +2193,7 @@ private:
2275
2193
  template <typename Elem, typename Traits, typename Allocator>
2276
2194
  BOOST_ASIO_NODISCARD inline
2277
2195
  dynamic_string_buffer<Elem, Traits, Allocator> dynamic_buffer(
2278
- std::basic_string<Elem, Traits, Allocator>& data) BOOST_ASIO_NOEXCEPT
2196
+ std::basic_string<Elem, Traits, Allocator>& data) noexcept
2279
2197
  {
2280
2198
  return dynamic_string_buffer<Elem, Traits, Allocator>(data);
2281
2199
  }
@@ -2289,7 +2207,7 @@ template <typename Elem, typename Traits, typename Allocator>
2289
2207
  BOOST_ASIO_NODISCARD inline
2290
2208
  dynamic_string_buffer<Elem, Traits, Allocator> dynamic_buffer(
2291
2209
  std::basic_string<Elem, Traits, Allocator>& data,
2292
- std::size_t max_size) BOOST_ASIO_NOEXCEPT
2210
+ std::size_t max_size) noexcept
2293
2211
  {
2294
2212
  return dynamic_string_buffer<Elem, Traits, Allocator>(data, max_size);
2295
2213
  }
@@ -2301,7 +2219,7 @@ dynamic_string_buffer<Elem, Traits, Allocator> dynamic_buffer(
2301
2219
  template <typename Elem, typename Allocator>
2302
2220
  BOOST_ASIO_NODISCARD inline
2303
2221
  dynamic_vector_buffer<Elem, Allocator> dynamic_buffer(
2304
- std::vector<Elem, Allocator>& data) BOOST_ASIO_NOEXCEPT
2222
+ std::vector<Elem, Allocator>& data) noexcept
2305
2223
  {
2306
2224
  return dynamic_vector_buffer<Elem, Allocator>(data);
2307
2225
  }
@@ -2314,7 +2232,7 @@ template <typename Elem, typename Allocator>
2314
2232
  BOOST_ASIO_NODISCARD inline
2315
2233
  dynamic_vector_buffer<Elem, Allocator> dynamic_buffer(
2316
2234
  std::vector<Elem, Allocator>& data,
2317
- std::size_t max_size) BOOST_ASIO_NOEXCEPT
2235
+ std::size_t max_size) noexcept
2318
2236
  {
2319
2237
  return dynamic_vector_buffer<Elem, Allocator>(data, max_size);
2320
2238
  }
@@ -2366,7 +2284,7 @@ inline std::size_t buffer_copy_1(const mutable_buffer& target,
2366
2284
  template <typename TargetIterator, typename SourceIterator>
2367
2285
  inline std::size_t buffer_copy(one_buffer, one_buffer,
2368
2286
  TargetIterator target_begin, TargetIterator,
2369
- SourceIterator source_begin, SourceIterator) BOOST_ASIO_NOEXCEPT
2287
+ SourceIterator source_begin, SourceIterator) noexcept
2370
2288
  {
2371
2289
  return (buffer_copy_1)(*target_begin, *source_begin);
2372
2290
  }
@@ -2375,7 +2293,7 @@ template <typename TargetIterator, typename SourceIterator>
2375
2293
  inline std::size_t buffer_copy(one_buffer, one_buffer,
2376
2294
  TargetIterator target_begin, TargetIterator,
2377
2295
  SourceIterator source_begin, SourceIterator,
2378
- std::size_t max_bytes_to_copy) BOOST_ASIO_NOEXCEPT
2296
+ std::size_t max_bytes_to_copy) noexcept
2379
2297
  {
2380
2298
  return (buffer_copy_1)(*target_begin,
2381
2299
  boost::asio::buffer(*source_begin, max_bytes_to_copy));
@@ -2386,7 +2304,7 @@ std::size_t buffer_copy(one_buffer, multiple_buffers,
2386
2304
  TargetIterator target_begin, TargetIterator,
2387
2305
  SourceIterator source_begin, SourceIterator source_end,
2388
2306
  std::size_t max_bytes_to_copy
2389
- = (std::numeric_limits<std::size_t>::max)()) BOOST_ASIO_NOEXCEPT
2307
+ = (std::numeric_limits<std::size_t>::max)()) noexcept
2390
2308
  {
2391
2309
  std::size_t total_bytes_copied = 0;
2392
2310
  SourceIterator source_iter = source_begin;
@@ -2409,7 +2327,7 @@ std::size_t buffer_copy(multiple_buffers, one_buffer,
2409
2327
  TargetIterator target_begin, TargetIterator target_end,
2410
2328
  SourceIterator source_begin, SourceIterator,
2411
2329
  std::size_t max_bytes_to_copy
2412
- = (std::numeric_limits<std::size_t>::max)()) BOOST_ASIO_NOEXCEPT
2330
+ = (std::numeric_limits<std::size_t>::max)()) noexcept
2413
2331
  {
2414
2332
  std::size_t total_bytes_copied = 0;
2415
2333
  TargetIterator target_iter = target_begin;
@@ -2430,7 +2348,7 @@ std::size_t buffer_copy(multiple_buffers, one_buffer,
2430
2348
  template <typename TargetIterator, typename SourceIterator>
2431
2349
  std::size_t buffer_copy(multiple_buffers, multiple_buffers,
2432
2350
  TargetIterator target_begin, TargetIterator target_end,
2433
- SourceIterator source_begin, SourceIterator source_end) BOOST_ASIO_NOEXCEPT
2351
+ SourceIterator source_begin, SourceIterator source_end) noexcept
2434
2352
  {
2435
2353
  std::size_t total_bytes_copied = 0;
2436
2354
 
@@ -2475,7 +2393,7 @@ template <typename TargetIterator, typename SourceIterator>
2475
2393
  std::size_t buffer_copy(multiple_buffers, multiple_buffers,
2476
2394
  TargetIterator target_begin, TargetIterator target_end,
2477
2395
  SourceIterator source_begin, SourceIterator source_end,
2478
- std::size_t max_bytes_to_copy) BOOST_ASIO_NOEXCEPT
2396
+ std::size_t max_bytes_to_copy) noexcept
2479
2397
  {
2480
2398
  std::size_t total_bytes_copied = 0;
2481
2399
 
@@ -2542,7 +2460,7 @@ std::size_t buffer_copy(multiple_buffers, multiple_buffers,
2542
2460
  */
2543
2461
  template <typename MutableBufferSequence, typename ConstBufferSequence>
2544
2462
  inline std::size_t buffer_copy(const MutableBufferSequence& target,
2545
- const ConstBufferSequence& source) BOOST_ASIO_NOEXCEPT
2463
+ const ConstBufferSequence& source) noexcept
2546
2464
  {
2547
2465
  return detail::buffer_copy(
2548
2466
  detail::buffer_sequence_cardinality<MutableBufferSequence>(),
@@ -2580,7 +2498,7 @@ inline std::size_t buffer_copy(const MutableBufferSequence& target,
2580
2498
  template <typename MutableBufferSequence, typename ConstBufferSequence>
2581
2499
  inline std::size_t buffer_copy(const MutableBufferSequence& target,
2582
2500
  const ConstBufferSequence& source,
2583
- std::size_t max_bytes_to_copy) BOOST_ASIO_NOEXCEPT
2501
+ std::size_t max_bytes_to_copy) noexcept
2584
2502
  {
2585
2503
  return detail::buffer_copy(
2586
2504
  detail::buffer_sequence_cardinality<MutableBufferSequence>(),
@@ -2672,6 +2590,163 @@ struct is_dynamic_buffer
2672
2590
  {
2673
2591
  };
2674
2592
 
2593
+ namespace buffer_literals {
2594
+ namespace detail {
2595
+
2596
+ template <char... Chars>
2597
+ struct chars {};
2598
+
2599
+ template <unsigned char... Bytes>
2600
+ struct bytes {};
2601
+
2602
+ // Literal processor that converts binary literals to an array of bytes.
2603
+
2604
+ template <typename Bytes, char... Chars>
2605
+ struct bin_literal;
2606
+
2607
+ template <unsigned char... Bytes>
2608
+ struct bin_literal<bytes<Bytes...>>
2609
+ {
2610
+ static const std::size_t size = sizeof...(Bytes);
2611
+ static const unsigned char data[sizeof...(Bytes)];
2612
+ };
2613
+
2614
+ template <unsigned char... Bytes>
2615
+ const unsigned char bin_literal<bytes<Bytes...>>::data[sizeof...(Bytes)]
2616
+ = { Bytes... };
2617
+
2618
+ template <unsigned char... Bytes, char Bit7, char Bit6, char Bit5,
2619
+ char Bit4, char Bit3, char Bit2, char Bit1, char Bit0, char... Chars>
2620
+ struct bin_literal<bytes<Bytes...>, Bit7, Bit6,
2621
+ Bit5, Bit4, Bit3, Bit2, Bit1, Bit0, Chars...> :
2622
+ bin_literal<
2623
+ bytes<Bytes...,
2624
+ static_cast<unsigned char>(
2625
+ (Bit7 == '1' ? 0x80 : 0) |
2626
+ (Bit6 == '1' ? 0x40 : 0) |
2627
+ (Bit5 == '1' ? 0x20 : 0) |
2628
+ (Bit4 == '1' ? 0x10 : 0) |
2629
+ (Bit3 == '1' ? 0x08 : 0) |
2630
+ (Bit2 == '1' ? 0x04 : 0) |
2631
+ (Bit1 == '1' ? 0x02 : 0) |
2632
+ (Bit0 == '1' ? 0x01 : 0))
2633
+ >, Chars...> {};
2634
+
2635
+ template <unsigned char... Bytes, char... Chars>
2636
+ struct bin_literal<bytes<Bytes...>, Chars...>
2637
+ {
2638
+ static_assert(sizeof...(Chars) == 0,
2639
+ "number of digits in a binary buffer literal must be a multiple of 8");
2640
+
2641
+ static const std::size_t size = 0;
2642
+ static const unsigned char data[1];
2643
+ };
2644
+
2645
+ template <unsigned char... Bytes, char... Chars>
2646
+ const unsigned char bin_literal<bytes<Bytes...>, Chars...>::data[1] = {};
2647
+
2648
+ // Literal processor that converts hexadecimal literals to an array of bytes.
2649
+
2650
+ template <typename Bytes, char... Chars>
2651
+ struct hex_literal;
2652
+
2653
+ template <unsigned char... Bytes>
2654
+ struct hex_literal<bytes<Bytes...>>
2655
+ {
2656
+ static const std::size_t size = sizeof...(Bytes);
2657
+ static const unsigned char data[sizeof...(Bytes)];
2658
+ };
2659
+
2660
+ template <unsigned char... Bytes>
2661
+ const unsigned char hex_literal<bytes<Bytes...>>::data[sizeof...(Bytes)]
2662
+ = { Bytes... };
2663
+
2664
+ template <unsigned char... Bytes, char Hi, char Lo, char... Chars>
2665
+ struct hex_literal<bytes<Bytes...>, Hi, Lo, Chars...> :
2666
+ hex_literal<
2667
+ bytes<Bytes...,
2668
+ static_cast<unsigned char>(
2669
+ Lo >= 'A' && Lo <= 'F' ? Lo - 'A' + 10 :
2670
+ (Lo >= 'a' && Lo <= 'f' ? Lo - 'a' + 10 : Lo - '0')) |
2671
+ ((static_cast<unsigned char>(
2672
+ Hi >= 'A' && Hi <= 'F' ? Hi - 'A' + 10 :
2673
+ (Hi >= 'a' && Hi <= 'f' ? Hi - 'a' + 10 : Hi - '0'))) << 4)
2674
+ >, Chars...> {};
2675
+
2676
+ template <unsigned char... Bytes, char Char>
2677
+ struct hex_literal<bytes<Bytes...>, Char>
2678
+ {
2679
+ static_assert(!Char,
2680
+ "a hexadecimal buffer literal must have an even number of digits");
2681
+
2682
+ static const std::size_t size = 0;
2683
+ static const unsigned char data[1];
2684
+ };
2685
+
2686
+ template <unsigned char... Bytes, char Char>
2687
+ const unsigned char hex_literal<bytes<Bytes...>, Char>::data[1] = {};
2688
+
2689
+ // Helper template that removes digit separators and then passes the cleaned
2690
+ // variadic pack of characters to the literal processor.
2691
+
2692
+ template <template <typename, char...> class Literal,
2693
+ typename Clean, char... Raw>
2694
+ struct remove_separators;
2695
+
2696
+ template <template <typename, char...> class Literal,
2697
+ char... Clean, char... Raw>
2698
+ struct remove_separators<Literal, chars<Clean...>, '\'', Raw...> :
2699
+ remove_separators<Literal, chars<Clean...>, Raw...> {};
2700
+
2701
+ template <template <typename, char...> class Literal,
2702
+ char... Clean, char C, char... Raw>
2703
+ struct remove_separators<Literal, chars<Clean...>, C, Raw...> :
2704
+ remove_separators<Literal, chars<Clean..., C>, Raw...> {};
2705
+
2706
+ template <template <typename, char...> class Literal, char... Clean>
2707
+ struct remove_separators<Literal, chars<Clean...>> :
2708
+ Literal<bytes<>, Clean...> {};
2709
+
2710
+ // Helper template to determine the literal type based on the prefix.
2711
+
2712
+ template <char... Chars>
2713
+ struct literal;
2714
+
2715
+ template <char... Chars>
2716
+ struct literal<'0', 'b', Chars...> :
2717
+ remove_separators<bin_literal, chars<>, Chars...>{};
2718
+
2719
+ template <char... Chars>
2720
+ struct literal<'0', 'B', Chars...> :
2721
+ remove_separators<bin_literal, chars<>, Chars...>{};
2722
+
2723
+ template <char... Chars>
2724
+ struct literal<'0', 'x', Chars...> :
2725
+ remove_separators<hex_literal, chars<>, Chars...>{};
2726
+
2727
+ template <char... Chars>
2728
+ struct literal<'0', 'X', Chars...> :
2729
+ remove_separators<hex_literal, chars<>, Chars...>{};
2730
+
2731
+ } // namespace detail
2732
+
2733
+ /// Literal operator for creating const_buffer objects from string literals.
2734
+ inline BOOST_ASIO_CONST_BUFFER operator"" _buf(const char* data, std::size_t n)
2735
+ {
2736
+ return BOOST_ASIO_CONST_BUFFER(data, n);
2737
+ }
2738
+
2739
+ /// Literal operator for creating const_buffer objects from unbounded binary or
2740
+ /// hexadecimal integer literals.
2741
+ template <char... Chars>
2742
+ inline BOOST_ASIO_CONST_BUFFER operator"" _buf()
2743
+ {
2744
+ return BOOST_ASIO_CONST_BUFFER(
2745
+ +detail::literal<Chars...>::data,
2746
+ detail::literal<Chars...>::size);
2747
+ }
2748
+
2749
+ } // namespace buffer_literals
2675
2750
  } // namespace asio
2676
2751
  } // namespace boost
2677
2752