passenger 6.0.7 → 6.0.8

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 (1573) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +29 -0
  3. data/CONTRIBUTORS +1 -0
  4. data/README.md +2 -9
  5. data/build/common_library.rb +4 -4
  6. data/build/packaging.rb +4 -2
  7. data/build/support/cxx_dependency_map.rb +1 -0
  8. data/dev/copy_boost_headers +1 -1
  9. data/resources/release.txt +1 -0
  10. data/resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb +1 -0
  11. data/resources/templates/standalone/global.erb +4 -0
  12. data/src/agent/Core/AdminPanelConnector.h +1 -1
  13. data/src/agent/Core/ApplicationPool/Group.h +1 -1
  14. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
  15. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
  16. data/src/agent/Core/ApplicationPool/Options.h +2 -2
  17. data/src/agent/Core/ApplicationPool/Pool.h +1 -1
  18. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +1 -1
  19. data/src/agent/Core/Config.h +2 -2
  20. data/src/agent/Core/Controller/Config.h +2 -2
  21. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +1 -1
  22. data/src/agent/Core/SpawningKit/Handshake/Perform.h +1 -1
  23. data/src/agent/Core/SpawningKit/PipeWatcher.h +1 -1
  24. data/src/agent/Core/SpawningKit/SmartSpawner.h +1 -1
  25. data/src/agent/Core/SpawningKit/Spawner.h +1 -0
  26. data/src/agent/Core/TelemetryCollector.h +1 -1
  27. data/src/agent/Shared/ApiServerUtils.h +1 -1
  28. data/src/agent/Watchdog/Config.h +1 -1
  29. data/src/agent/Watchdog/InstanceDirToucher.cpp +1 -1
  30. data/src/agent/Watchdog/WatchdogMain.cpp +1 -1
  31. data/src/cxx_supportlib/BackgroundEventLoop.cpp +1 -1
  32. data/src/cxx_supportlib/ConfigKit/Schema.h +1 -1
  33. data/src/cxx_supportlib/ConfigKit/Translator.h +1 -1
  34. data/src/cxx_supportlib/Constants.h +2 -2
  35. data/src/cxx_supportlib/FileTools/FileManip.cpp +10 -1
  36. data/src/cxx_supportlib/FileTools/FileManip.h +16 -0
  37. data/src/cxx_supportlib/IOTools/BufferedIO.h +1 -1
  38. data/src/cxx_supportlib/IOTools/MessageIO.h +1 -1
  39. data/src/cxx_supportlib/SafeLibev.h +1 -1
  40. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -1
  41. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
  42. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +9 -12
  43. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +5 -1
  44. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  45. data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +107 -5
  46. data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +2 -2
  47. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +12 -1
  48. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +13 -3
  49. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +0 -1
  50. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +6 -2
  51. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +13 -1
  52. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +6 -15
  53. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +24 -24
  54. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +1 -0
  55. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +84 -19
  56. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +3 -0
  57. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +4 -0
  58. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +10 -0
  59. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +150 -147
  60. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +1 -1
  62. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +47 -25
  63. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +3 -3
  64. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +14 -9
  65. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +189 -189
  66. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +59 -66
  67. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +73 -38
  68. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +9 -7
  69. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +12 -22
  70. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +11 -11
  72. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +1 -1
  73. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +13 -13
  74. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +3 -3
  75. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +8 -8
  76. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +1 -0
  77. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +2 -4
  78. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +3 -3
  79. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/compare.hpp +3 -3
  80. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +2 -2
  81. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +1 -1
  82. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder.hpp +15 -15
  83. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter.hpp +1 -1
  84. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/trim.hpp +3 -3
  85. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_format.hpp +1 -2
  86. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +0 -1
  87. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/iter_find.hpp +8 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate.hpp +4 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/split.hpp +12 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +2 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +47 -17
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +73 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +2 -8
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +37 -20
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +426 -65
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +135 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +432 -257
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +178 -113
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +1 -1
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +433 -257
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +286 -143
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +315 -96
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +241 -64
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +364 -227
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +976 -461
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +21 -44
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +15 -35
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +329 -197
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +1 -1
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +1 -1
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +221 -115
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +11 -47
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +416 -89
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +23 -27
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +31 -30
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +23 -27
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +1 -1
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +473 -0
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +138 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +118 -102
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -3
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +33 -10
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +114 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +20 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +4 -3
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +145 -27
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +109 -0
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +107 -1
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +90 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +11 -6
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +9 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +481 -129
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +29 -12
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +25 -7
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +36 -16
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +36 -16
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +1 -1
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +2 -2
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +205 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -1
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +1 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +1 -1
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +1 -1
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +1 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +55 -6
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +24 -1
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +27 -1
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +1 -1
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +378 -35
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +218 -84
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +1 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +12 -8
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +40 -2
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +1 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +6 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +11 -6
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +5 -4
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +16 -19
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +4 -4
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +37 -33
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +87 -4
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +8 -3
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +22 -23
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +674 -283
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +15 -6
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +211 -5
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +9 -10
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +6 -5
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +177 -0
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +65 -16
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +1 -1
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +4 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +56 -0
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +7 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +63 -52
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +2 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +14 -8
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +15 -2
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +16 -6
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +62 -34
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +15 -7
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +15 -14
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +53 -28
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +20 -10
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +43 -19
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +42 -16
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +26 -13
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +48 -20
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +43 -17
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +82 -80
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +77 -47
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +15 -7
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +1 -1
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +4 -2
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +16 -14
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +31 -13
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +31 -15
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +18 -18
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +22 -19
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +21 -2
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +1 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +11 -7
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +24 -12
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +47 -1
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +2 -2
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +1 -1
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +1 -1
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +47 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +13 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -1
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +26 -2
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +5 -2
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +7 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +67 -5
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +1 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +1 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +65 -3
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +177 -2
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +13 -8
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +84 -8
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +46 -10
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +27 -14
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +48 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +251 -0
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +2266 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +49 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1353 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1066 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +394 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +1020 -0
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +490 -0
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +187 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +203 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +154 -0
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +107 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +130 -0
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +263 -0
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +235 -0
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +92 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +270 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +240 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +42 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +38 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +73 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +919 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +180 -0
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +96 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +723 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +329 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +282 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +50 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +722 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +294 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +88 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +313 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +257 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +257 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +490 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +254 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +454 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +3 -2
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +8 -2
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +129 -12
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -2
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +29 -6
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +30 -4
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -1
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +438 -0
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +154 -56
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +148 -52
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +300 -0
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +637 -0
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +299 -243
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +204 -33
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +132 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +199 -34
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +8 -6
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +16 -101
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +6 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +14 -5
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +209 -114
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +4 -3
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +51 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +204 -33
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +619 -132
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +194 -90
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +2278 -445
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl → impl}/redirect_error.hpp +148 -52
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +59 -68
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +2 -2
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +4 -1
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +1 -1
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +25 -6
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +114 -13
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +261 -38
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +73 -8
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +281 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +131 -40
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +562 -132
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +185 -91
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +714 -60
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +46 -54
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +35 -27
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +32 -26
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +1 -1
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +41 -36
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +1 -1
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +1 -1
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +24 -23
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +200 -190
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +1 -1
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +1 -1
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +21 -19
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -10
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +23 -18
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +11 -11
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +26 -26
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +1 -1
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +1 -1
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +1 -1
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +1 -1
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +9 -9
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +3 -3
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +63 -0
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +10 -2
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +14 -19
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +7 -1
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +8 -1
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +60 -0
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +189 -74
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +180 -72
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +5 -612
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +2 -2
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +3 -326
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +29 -10
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +660 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +300 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +398 -57
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +51 -28
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1460 -423
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/redirect_error.hpp → redirect_error.hpp} +9 -10
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +528 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +314 -0
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +3 -736
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +3 -422
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +26 -26
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +13 -5
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +2 -1
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +4 -1
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +6 -1
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +6 -1
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +6 -1
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +37 -10
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +3 -3
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +51 -8
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +5 -1
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +6 -1
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +17 -2
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +41 -6
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +1 -1
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +11 -2
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +21 -7
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +92 -0
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +44 -10
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +3 -1
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +75 -0
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +5 -1
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +2 -1
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -3
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +235 -97
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +33 -0
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -1
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +264 -13
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +16 -4
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +558 -25
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -1
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +47 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +917 -38
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +116 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +116 -0
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +114 -0
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +114 -0
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +102 -0
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +110 -0
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +110 -0
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +110 -0
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +110 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +110 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +110 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +110 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +110 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +110 -0
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +110 -0
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +110 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +110 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +110 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +110 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +110 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +114 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +114 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +236 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +236 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +110 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +110 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +110 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +125 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +125 -0
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +114 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +114 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +2 -2
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +101 -36
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +171 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +295 -42
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +363 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +186 -72
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +188 -73
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +3 -346
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +4 -296
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +38 -9
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +3 -344
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +3 -328
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +372 -54
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +51 -28
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +93 -0
  590. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +9 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +178 -11
  592. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +12 -3
  593. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +85 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +2 -191
  595. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/aligned_variable.hpp +57 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +129 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{atomic_template.hpp → atomic_impl.hpp} +327 -429
  599. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +1126 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +23 -4
  601. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +3 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/capabilities.hpp +217 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +46 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +58 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_gcc_alpha.hpp → caps_arch_gcc_alpha.hpp} +4 -4
  606. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_arm.hpp → caps_arch_gcc_arm.hpp} +37 -8
  607. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_ppc.hpp → caps_arch_gcc_ppc.hpp} +19 -6
  608. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_gcc_sparc.hpp → caps_arch_gcc_sparc.hpp} +4 -4
  609. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_x86.hpp → caps_arch_gcc_x86.hpp} +22 -6
  610. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_msvc_arm.hpp → caps_arch_msvc_arm.hpp} +4 -4
  611. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_msvc_x86.hpp → caps_arch_msvc_x86.hpp} +12 -6
  612. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +100 -75
  613. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +0 -7
  614. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +50 -0
  615. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +81 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +39 -15
  617. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations.hpp +50 -0
  618. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations_fwd.hpp +38 -0
  619. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +1121 -0
  620. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +1909 -0
  621. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_alpha.hpp → core_arch_ops_gcc_alpha.hpp} +280 -289
  622. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_arm.hpp → core_arch_ops_gcc_arm.hpp} +467 -447
  623. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_ppc.hpp → core_arch_ops_gcc_ppc.hpp} +75 -94
  624. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_sparc.hpp → core_arch_ops_gcc_sparc.hpp} +33 -58
  625. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_x86_dcas.hpp → core_arch_ops_gcc_x86.hpp} +507 -20
  626. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_msvc_arm.hpp → core_arch_ops_msvc_arm.hpp} +58 -54
  627. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_msvc_x86.hpp → core_arch_ops_msvc_x86.hpp} +69 -101
  628. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations.hpp +49 -0
  629. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +195 -0
  630. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated_fwd.hpp +38 -0
  631. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_fwd.hpp +38 -0
  632. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_cas_based.hpp → core_ops_cas_based.hpp} +9 -22
  633. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +306 -0
  634. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_sync.hpp → core_ops_gcc_sync.hpp} +75 -52
  635. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_linux_arm.hpp → core_ops_linux_arm.hpp} +32 -43
  636. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +201 -0
  637. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_extending_cas_based.hpp → extending_cas_based_arithmetic.hpp} +12 -9
  638. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +4 -1
  639. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +23 -12
  640. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +12 -9
  641. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +4 -1
  642. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +60 -40
  643. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +1060 -0
  644. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +1330 -0
  645. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +363 -355
  646. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +94 -91
  647. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +232 -102
  648. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +9 -17
  649. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +6 -4
  650. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +119 -92
  651. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +41 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +60 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +58 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +53 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +90 -0
  656. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +68 -0
  657. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +70 -0
  658. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +69 -0
  659. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +66 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +66 -0
  661. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +41 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +50 -0
  663. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +75 -0
  664. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +53 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +64 -0
  666. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +67 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/footer.hpp +24 -0
  668. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +4 -1
  669. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +14 -8
  670. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -3
  671. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +147 -0
  672. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +75 -0
  673. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +66 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/header.hpp +72 -0
  675. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{integral_extend.hpp → integral_conversions.hpp} +8 -5
  676. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -11
  677. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +46 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +151 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +47 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +43 -0
  681. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch32_common.hpp +53 -0
  682. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch64_common.hpp +53 -0
  683. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +8 -79
  684. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -1
  685. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_common.hpp +7 -2
  686. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +23 -5
  687. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +64 -27
  688. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +187 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +51 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -2
  691. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +45 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_capabilities.hpp +363 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_dragonfly_umtx.hpp +30 -0
  694. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_freebsd_umtx.hpp +40 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_futex.hpp +31 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +55 -0
  697. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations.hpp +28 -0
  698. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations_fwd.hpp +43 -0
  699. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +75 -0
  700. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +97 -0
  701. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +119 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +111 -0
  703. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +143 -0
  704. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +150 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +7 -18
  706. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +85 -0
  707. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +40 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +85 -0
  709. data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +20 -1
  710. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +11 -11
  711. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +1 -1
  712. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +25 -11
  713. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +18 -18
  714. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +1 -1
  715. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +1 -1
  716. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +26 -6
  717. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +2 -2
  718. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +8 -5
  719. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +107 -105
  720. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -21
  721. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +25 -31
  722. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
  723. data/src/cxx_supportlib/vendor-modified/boost/config/abi_prefix.hpp +1 -1
  724. data/src/cxx_supportlib/vendor-modified/boost/config/abi_suffix.hpp +1 -3
  725. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +72 -22
  726. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -1
  727. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +13 -0
  728. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +155 -10
  729. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +5 -0
  731. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
  732. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +21 -5
  733. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +2 -0
  734. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +7 -0
  736. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
  737. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
  738. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
  739. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +2 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +15 -7
  742. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +5 -0
  743. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
  744. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -1
  745. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_stdlib_config.hpp +13 -2
  746. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +68 -4
  747. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +3 -0
  748. data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +63 -74
  749. data/src/cxx_supportlib/vendor-modified/boost/config/requires_threads.hpp +1 -1
  750. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +10 -4
  751. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +1 -0
  752. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +2 -0
  753. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +9 -1
  754. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +1 -0
  755. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +1 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -1
  757. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +1 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +6 -5
  759. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +1 -0
  760. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +1 -0
  761. data/src/cxx_supportlib/vendor-modified/boost/config/user.hpp +2 -2
  762. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +15 -0
  763. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +10 -10
  764. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +13 -13
  765. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +19 -3
  766. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +117 -29
  767. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +250 -208
  768. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +7 -7
  769. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  770. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +4 -4
  771. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -1
  772. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -1
  773. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +2 -2
  774. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +4 -0
  775. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +21 -116
  776. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +11 -8
  777. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +14 -14
  778. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +30 -24
  779. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +7 -0
  780. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +133 -117
  781. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
  782. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +83 -18
  783. data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +6 -6
  784. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +103 -69
  785. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +6 -0
  786. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +3 -12
  787. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +6 -2
  788. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +51 -45
  789. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +24 -22
  790. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +83 -77
  791. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +82 -87
  792. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +17 -2
  793. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +2 -2
  794. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +278 -2
  795. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +3 -3
  796. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +1 -4
  797. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +30 -1
  798. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +5 -4
  799. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +90 -6
  800. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +4 -4
  801. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +4 -4
  802. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +80 -80
  803. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +63 -67
  804. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +48 -42
  805. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +150 -105
  806. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +174 -155
  807. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +157 -105
  808. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +54 -53
  809. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -15
  810. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +207 -207
  811. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -51
  812. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +4 -3
  813. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +2 -2
  814. data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +169 -0
  815. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +633 -0
  816. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +6 -4
  817. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +148 -0
  818. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -6
  819. data/src/cxx_supportlib/vendor-modified/boost/core/first_scalar.hpp +45 -0
  820. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +157 -50
  821. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +82 -1
  822. data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +14 -2
  823. data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +87 -0
  824. data/src/cxx_supportlib/vendor-modified/boost/core/nvp.hpp +57 -0
  825. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +1 -0
  826. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +1 -1
  827. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +1 -1
  828. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +6 -3
  829. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +2 -2
  830. data/src/cxx_supportlib/vendor-modified/boost/core/uncaught_exceptions.hpp +155 -0
  831. data/src/cxx_supportlib/vendor-modified/boost/core/use_default.hpp +17 -0
  832. data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +5 -5
  833. data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +3 -3
  834. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +9 -4
  835. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +4 -17
  836. data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +19 -11
  837. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +23 -23
  838. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +17 -22
  839. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +44 -49
  840. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +5 -6
  841. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generators.hpp +24 -19
  842. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_parsing.hpp +51 -25
  843. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +56 -56
  844. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_transition_generators.hpp +2 -2
  845. data/src/cxx_supportlib/vendor-modified/boost/date_time/find_match.hpp +42 -0
  846. data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +98 -98
  847. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +22 -14
  848. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -4
  849. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +44 -32
  850. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +2 -2
  851. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +51 -23
  852. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +29 -27
  853. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +43 -9
  854. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +3 -3
  855. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +32 -13
  856. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +15 -17
  857. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +27 -22
  858. data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +57 -37
  859. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_io.hpp +3 -0
  860. data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -3
  861. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +44 -47
  862. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +34 -31
  863. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_parser.hpp +27 -28
  864. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +8 -8
  865. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +13 -26
  866. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +4 -4
  867. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +22 -4
  868. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +28 -12
  869. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_formatter.hpp +1 -0
  870. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +0 -5
  871. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +5 -3
  872. data/src/cxx_supportlib/vendor-modified/boost/date_time/strings_from_facet.hpp +4 -2
  873. data/src/cxx_supportlib/vendor-modified/boost/date_time/time.hpp +24 -3
  874. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +56 -44
  875. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -11
  876. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +3 -8
  877. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +18 -18
  878. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_counted.hpp +65 -50
  879. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +43 -30
  880. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +1 -1
  881. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_names.hpp +1 -1
  882. data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +0 -1
  883. data/src/cxx_supportlib/vendor-modified/boost/date_time/wrapping_int.hpp +16 -15
  884. data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +7 -5
  885. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -4
  886. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +10 -4
  887. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +10 -4
  888. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +12 -7
  889. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +63 -8
  890. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +9 -4
  891. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +9 -4
  892. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +2 -2
  893. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +9 -4
  894. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +15 -6
  895. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +19 -57
  896. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +9 -4
  897. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +11 -6
  898. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +9 -4
  899. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +9 -4
  900. data/src/cxx_supportlib/vendor-modified/boost/exception_ptr.hpp +2 -2
  901. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +13 -6
  902. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +4 -12
  903. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +22 -4
  904. data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +2 -2
  905. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +1 -1
  906. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +30 -28
  907. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +83 -0
  908. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +6 -6
  909. data/src/cxx_supportlib/vendor-modified/boost/integer/mod_inverse.hpp +53 -0
  910. data/src/cxx_supportlib/vendor-modified/boost/integer/static_log2.hpp +2 -3
  911. data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +1 -0
  912. data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +1 -1
  913. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +22 -22
  914. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +11 -11
  915. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +22 -22
  916. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -11
  917. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +2 -2
  918. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +3 -3
  919. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +12 -12
  920. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +18 -9
  921. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +12 -4
  922. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +10 -10
  923. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +1 -1
  924. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +15 -3
  925. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +7 -12
  926. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +1 -0
  927. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +13 -1
  928. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -11
  929. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +6 -1
  930. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +13 -17
  931. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +3 -0
  932. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -9
  933. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +9 -1
  934. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +6 -0
  935. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +14 -14
  936. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +2 -2
  937. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +11 -11
  938. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -1
  939. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +22 -22
  940. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +22 -22
  941. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +11 -11
  942. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +11 -11
  943. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +22 -22
  944. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +11 -11
  945. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +93 -66
  946. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +17 -14
  947. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +67 -60
  948. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +9 -9
  949. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +361 -315
  950. data/src/cxx_supportlib/vendor-modified/boost/io_fwd.hpp +45 -49
  951. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +4 -4
  952. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +3 -2
  953. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +3 -3
  954. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +1 -1
  955. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  956. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +18 -13
  957. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +43 -43
  958. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +2 -2
  959. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +1 -1
  960. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  961. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -5
  962. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  963. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
  964. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +1 -1
  965. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +1 -1
  966. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +2 -2
  967. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +10 -3
  968. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/instances.cpp +1 -1
  969. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +7 -0
  970. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +4 -2
  971. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_traits_defaults.cpp +2 -2
  972. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +3 -1
  973. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +5 -5
  974. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +7 -0
  975. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/winstances.cpp +1 -1
  976. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +0 -1
  977. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +4 -3
  978. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +12 -7
  979. data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +50 -52
  980. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +41 -7
  981. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +23 -3
  982. data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +6 -6
  983. data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +2 -2
  984. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +6 -12
  985. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +35 -26
  986. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +18 -12
  987. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +103 -318
  988. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +437 -10
  989. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +68 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +1 -1
  991. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +15 -0
  992. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  993. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +11 -6
  994. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +2 -1
  995. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
  996. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +1 -1
  997. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +3 -3
  998. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/common_name_wknd.hpp +2 -2
  999. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/adl.hpp +1 -1
  1000. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/arrays.hpp +1 -1
  1001. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bcc.hpp +2 -2
  1002. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bind.hpp +1 -1
  1003. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/compiler.hpp +2 -2
  1004. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ctps.hpp +1 -1
  1005. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dtp.hpp +3 -3
  1006. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/forwarding.hpp +1 -1
  1007. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/integral.hpp +1 -1
  1008. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/operators.hpp +1 -1
  1009. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
  1010. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/preprocessor.hpp +1 -1
  1011. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ttp.hpp +2 -2
  1012. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_impl.hpp +1 -1
  1013. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl_body.hpp +3 -3
  1014. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_rebind.hpp +4 -4
  1015. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +1 -1
  1016. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_support.hpp +3 -3
  1017. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
  1018. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/size_impl.hpp +1 -1
  1019. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/static_cast.hpp +1 -1
  1020. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +2 -2
  1021. data/src/cxx_supportlib/vendor-modified/boost/mpl/if.hpp +1 -1
  1022. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c.hpp +1 -1
  1023. data/src/cxx_supportlib/vendor-modified/boost/mpl/lower_bound.hpp +1 -1
  1024. data/src/cxx_supportlib/vendor-modified/boost/mpl/numeric_cast.hpp +1 -1
  1025. data/src/cxx_supportlib/vendor-modified/boost/mpl/upper_bound.hpp +1 -1
  1026. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/at.hpp +1 -1
  1027. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +4 -3
  1028. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/converter_policies.hpp +4 -3
  1029. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +31 -24
  1030. data/src/cxx_supportlib/vendor-modified/boost/optional/bad_optional_access.hpp +9 -0
  1031. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +1 -1
  1032. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +9 -4
  1033. data/src/cxx_supportlib/vendor-modified/boost/parameter/are_tagged_arguments.hpp +125 -0
  1034. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/always_true_predicate.hpp +42 -0
  1035. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1252 -358
  1036. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/as_lvalue.hpp +25 -0
  1037. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/augment_predicate.hpp +198 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/cast.hpp +7 -136
  1039. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/default.hpp +90 -59
  1040. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/has_nested_template_fn.hpp +111 -0
  1041. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_maybe.hpp +42 -16
  1042. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_placeholder.hpp +64 -0
  1043. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_tagged_argument.hpp +95 -0
  1044. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/lambda_tag.hpp +16 -0
  1045. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/maybe.hpp +128 -97
  1046. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/name.hpp +93 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/as_parameter_requirements.hpp +32 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduce_tag.hpp +217 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduced_item.hpp +34 -0
  1050. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/insert_tagged.hpp +23 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/is_named_argument.hpp +43 -0
  1052. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/item.hpp +47 -0
  1053. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_arg_list.hpp +438 -0
  1054. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_deduced_items.hpp +53 -0
  1055. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_items.hpp +45 -0
  1056. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_parameter_spec_items.hpp +244 -0
  1057. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/parameter_requirements.hpp +25 -0
  1058. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/predicate.hpp +87 -0
  1059. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/satisfies.hpp +142 -0
  1060. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_deduced.hpp +59 -0
  1061. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg.hpp +30 -0
  1062. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +67 -0
  1063. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_template_keyword_arg.hpp +30 -0
  1064. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_type.hpp +89 -0
  1065. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +41 -0
  1066. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parameter_requirements.hpp +7 -20
  1067. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parenthesized_type.hpp +8 -31
  1068. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/argument_pack.hpp +91 -0
  1069. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/match.hpp +55 -0
  1070. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp +97 -0
  1071. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp +1638 -0
  1072. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp +1796 -0
  1073. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp +65 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp +57 -0
  1075. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/flatten.hpp +7 -110
  1076. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each.hpp +7 -98
  1077. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each_pred.hpp +1029 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/argument_specs.hpp +24 -0
  1079. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/arity_range.hpp +42 -0
  1080. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/flatten.hpp +143 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/for_each.hpp +152 -0
  1082. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp +509 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_cast.hpp +730 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp +474 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp +33 -0
  1086. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp +43 -0
  1087. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_name.hpp +152 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp +331 -0
  1089. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp +122 -0
  1090. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp +34 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/specification.hpp +109 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/split_args.hpp +71 -0
  1093. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp +78 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_binary.hpp +31 -0
  1095. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_nullary.hpp +32 -0
  1096. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp +165 -0
  1097. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp +24 -0
  1098. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/nullptr.hpp +18 -0
  1099. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +92 -0
  1100. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/qualifier.hpp +88 -0
  1101. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_enum.hpp +26 -0
  1102. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_merge.hpp +1807 -0
  1103. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/result_of0.hpp +46 -29
  1104. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +94 -42
  1105. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +149 -27
  1106. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +865 -159
  1107. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument_fwd.hpp +38 -0
  1108. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/template_keyword.hpp +76 -34
  1109. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +159 -76
  1110. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default.hpp +17 -0
  1111. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default_tag.hpp +29 -0
  1112. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +25 -16
  1113. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/yesno.hpp +30 -14
  1114. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +154 -70
  1115. data/src/cxx_supportlib/vendor-modified/boost/parameter/compose.hpp +210 -0
  1116. data/src/cxx_supportlib/vendor-modified/boost/parameter/config.hpp +75 -6
  1117. data/src/cxx_supportlib/vendor-modified/boost/parameter/deduced.hpp +132 -0
  1118. data/src/cxx_supportlib/vendor-modified/boost/parameter/is_argument_pack.hpp +29 -0
  1119. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword.hpp +724 -102
  1120. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword_fwd.hpp +23 -0
  1121. data/src/cxx_supportlib/vendor-modified/boost/parameter/macros.hpp +205 -72
  1122. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +37 -44
  1123. data/src/cxx_supportlib/vendor-modified/boost/parameter/name.hpp +100 -126
  1124. data/src/cxx_supportlib/vendor-modified/boost/parameter/nested_keyword.hpp +111 -0
  1125. data/src/cxx_supportlib/vendor-modified/boost/parameter/optional.hpp +67 -0
  1126. data/src/cxx_supportlib/vendor-modified/boost/parameter/parameters.hpp +553 -884
  1127. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor.hpp +156 -1016
  1128. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor_no_spec.hpp +74 -0
  1129. data/src/cxx_supportlib/vendor-modified/boost/parameter/required.hpp +66 -0
  1130. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +87 -0
  1131. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +152 -70
  1132. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  1133. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +17 -16
  1134. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +86 -32
  1135. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +11 -10
  1136. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +14 -13
  1137. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +17 -16
  1138. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +28 -27
  1139. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +21 -20
  1140. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +19 -18
  1141. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +23 -22
  1142. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +10 -9
  1143. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +8 -7
  1144. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/riscv.h +43 -0
  1145. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +16 -15
  1146. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +12 -11
  1147. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +16 -15
  1148. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +10 -9
  1149. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +10 -9
  1150. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86.h +4 -4
  1151. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +26 -25
  1152. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +16 -15
  1153. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +9 -8
  1154. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/borland.h +12 -11
  1155. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/clang.h +10 -9
  1156. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/comeau.h +10 -9
  1157. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +12 -11
  1158. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/diab.h +10 -9
  1159. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/digitalmars.h +10 -9
  1160. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/dignus.h +10 -9
  1161. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/edg.h +10 -9
  1162. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ekopath.h +10 -9
  1163. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc.h +11 -10
  1164. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc_xml.h +9 -8
  1165. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/greenhills.h +12 -11
  1166. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/hp_acc.h +10 -9
  1167. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/iar.h +10 -9
  1168. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ibm.h +15 -14
  1169. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +18 -17
  1170. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/kai.h +10 -9
  1171. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/llvm.h +9 -8
  1172. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metaware.h +9 -8
  1173. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metrowerks.h +14 -13
  1174. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/microtec.h +9 -8
  1175. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/mpw.h +12 -11
  1176. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +10 -9
  1177. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/palm.h +10 -9
  1178. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/pgi.h +10 -9
  1179. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sgi_mipspro.h +12 -11
  1180. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sunpro.h +14 -13
  1181. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/tendra.h +9 -8
  1182. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +13 -12
  1183. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/watcom.h +10 -9
  1184. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +95 -46
  1185. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +21 -19
  1186. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm/versions.h +16 -10
  1187. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc.h +21 -19
  1188. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc/versions.h +27 -21
  1189. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +39 -37
  1190. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86/versions.h +73 -67
  1191. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +25 -23
  1192. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +24 -19
  1193. data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +11 -10
  1194. data/src/cxx_supportlib/vendor-modified/boost/predef/language/objc.h +9 -8
  1195. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +10 -9
  1196. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +39 -32
  1197. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +10 -9
  1198. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/gnu.h +12 -11
  1199. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/uc.h +10 -9
  1200. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/vms.h +9 -8
  1201. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/zos.h +10 -9
  1202. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +10 -9
  1203. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/dinkumware.h +11 -10
  1204. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/libcomo.h +10 -9
  1205. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/modena.h +10 -9
  1206. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msl.h +12 -11
  1207. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/roguewave.h +11 -10
  1208. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/sgi.h +10 -9
  1209. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +12 -11
  1210. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stlport.h +13 -12
  1211. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/vacpp.h +9 -8
  1212. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +97 -35
  1213. data/src/cxx_supportlib/vendor-modified/boost/predef/os.h +0 -1
  1214. data/src/cxx_supportlib/vendor-modified/boost/predef/os/aix.h +14 -13
  1215. data/src/cxx_supportlib/vendor-modified/boost/predef/os/amigaos.h +10 -9
  1216. data/src/cxx_supportlib/vendor-modified/boost/predef/os/beos.h +9 -8
  1217. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd.h +22 -23
  1218. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +9 -8
  1219. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +9 -8
  1220. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -9
  1221. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +16 -15
  1222. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +59 -58
  1223. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +10 -9
  1224. data/src/cxx_supportlib/vendor-modified/boost/predef/os/haiku.h +9 -8
  1225. data/src/cxx_supportlib/vendor-modified/boost/predef/os/hpux.h +11 -10
  1226. data/src/cxx_supportlib/vendor-modified/boost/predef/os/ios.h +12 -11
  1227. data/src/cxx_supportlib/vendor-modified/boost/predef/os/irix.h +10 -9
  1228. data/src/cxx_supportlib/vendor-modified/boost/predef/os/linux.h +14 -10
  1229. data/src/cxx_supportlib/vendor-modified/boost/predef/os/macos.h +14 -13
  1230. data/src/cxx_supportlib/vendor-modified/boost/predef/os/os400.h +9 -8
  1231. data/src/cxx_supportlib/vendor-modified/boost/predef/os/qnxnto.h +12 -11
  1232. data/src/cxx_supportlib/vendor-modified/boost/predef/os/solaris.h +10 -9
  1233. data/src/cxx_supportlib/vendor-modified/boost/predef/os/unix.h +24 -22
  1234. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +11 -10
  1235. data/src/cxx_supportlib/vendor-modified/boost/predef/os/windows.h +16 -15
  1236. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +12 -11
  1237. data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +22 -14
  1238. data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +1 -0
  1239. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/android.h +44 -0
  1240. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +9 -8
  1241. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +14 -9
  1242. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +12 -11
  1243. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +10 -9
  1244. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +10 -9
  1245. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +10 -9
  1246. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +9 -8
  1247. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +10 -9
  1248. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +9 -8
  1249. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +10 -9
  1250. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +9 -8
  1251. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +12 -11
  1252. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  1253. data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +16 -14
  1254. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +20 -20
  1255. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_list.hpp +7 -7
  1256. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_seq.hpp +7 -7
  1257. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_tuple.hpp +7 -7
  1258. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +2 -2
  1259. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities.hpp +2 -0
  1260. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/check_empty.hpp +19 -0
  1261. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/detail/is_empty.hpp +3 -3
  1262. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +28 -1
  1263. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/va_opt.hpp +34 -0
  1264. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +16 -16
  1265. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_tuple.hpp +14 -14
  1266. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +7 -7
  1267. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +3 -3
  1268. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/is_empty.hpp +11 -11
  1269. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each.hpp +27 -27
  1270. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each_i.hpp +28 -28
  1271. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/replace.hpp +7 -7
  1272. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +9 -9
  1273. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +3 -3
  1274. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +4 -4
  1275. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +2 -2
  1276. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +16 -16
  1277. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +16 -16
  1278. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +1 -1
  1279. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +1 -1
  1280. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +10 -10
  1281. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +16 -16
  1282. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +2 -2
  1283. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +2 -2
  1284. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +2 -2
  1285. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +2 -2
  1286. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic.hpp +1 -0
  1287. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/has_opt.hpp +39 -0
  1288. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +3 -3
  1289. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +28 -0
  1290. data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +1 -1
  1291. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +4 -0
  1292. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +0 -6
  1293. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +4 -10
  1294. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
  1295. data/src/cxx_supportlib/vendor-modified/boost/range/config.hpp +1 -1
  1296. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +4 -10
  1297. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +0 -32
  1298. data/src/cxx_supportlib/vendor-modified/boost/range/rbegin.hpp +0 -13
  1299. data/src/cxx_supportlib/vendor-modified/boost/range/rend.hpp +0 -13
  1300. data/src/cxx_supportlib/vendor-modified/boost/range/size.hpp +1 -1
  1301. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +33 -7
  1302. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -2
  1303. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +1 -1
  1304. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +4 -1
  1305. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +7 -0
  1306. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +17 -6
  1307. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +27 -5
  1308. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +36 -15
  1309. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
  1310. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +1 -1
  1311. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +105 -0
  1312. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +54 -0
  1313. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
  1314. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +13 -1
  1315. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +1 -1
  1316. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +26 -16
  1317. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +16 -6
  1318. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +11 -11
  1319. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +6 -6
  1320. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +7 -0
  1321. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +2 -0
  1322. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +7 -7
  1323. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
  1324. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
  1325. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +1 -1
  1326. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +1 -1
  1327. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +3 -3
  1328. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +92 -388
  1329. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +5 -5
  1330. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +8 -4
  1331. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +7 -0
  1332. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +63 -0
  1333. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +11 -0
  1334. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_nt.hpp +7 -0
  1335. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +7 -0
  1336. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +7 -0
  1337. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +8 -1
  1338. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +13 -2
  1339. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +6 -6
  1340. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +3 -3
  1341. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +87 -47
  1342. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +1 -1
  1343. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +12 -16
  1344. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +13 -3
  1345. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +10 -3
  1346. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +13 -3
  1347. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +148 -0
  1348. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +13 -3
  1349. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +13 -3
  1350. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +13 -3
  1351. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +13 -3
  1352. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +13 -3
  1353. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +25 -16
  1354. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +16 -8
  1355. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +14 -4
  1356. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +10 -3
  1357. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +25 -17
  1358. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +10 -3
  1359. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +13 -3
  1360. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +23 -26
  1361. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +27 -0
  1362. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +69 -0
  1363. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +51 -0
  1364. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_sleep.hpp +104 -0
  1365. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_typeinfo_.hpp +58 -0
  1366. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +7 -9
  1367. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +7 -0
  1368. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +85 -0
  1369. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +7 -0
  1370. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +7 -0
  1371. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +13 -5
  1372. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +8 -1
  1373. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -146
  1374. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +47 -1
  1375. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +22 -22
  1376. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +1 -1
  1377. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +1 -1
  1378. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +1 -1
  1379. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +3 -3
  1380. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +58 -23
  1381. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +79 -8
  1382. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +2 -2
  1383. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +5 -11
  1384. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +57 -16
  1385. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +32 -16
  1386. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +1 -1
  1387. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_adaptor.hpp +1 -1
  1388. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_base.hpp +1 -1
  1389. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +9 -21
  1390. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +9 -21
  1391. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_adaptor.hpp +1 -1
  1392. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_base.hpp +1 -1
  1393. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_op_status.hpp +3 -1
  1394. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +1 -1
  1395. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +3 -3
  1396. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +4 -4
  1397. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +3 -3
  1398. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +80 -14
  1399. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -1
  1400. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
  1401. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +16 -17
  1402. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +8 -8
  1403. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +4 -11
  1404. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp.orig +841 -0
  1405. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +3 -0
  1406. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +2 -0
  1407. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor_adaptor.hpp +2 -0
  1408. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +2 -0
  1409. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/inline_executor.hpp +8 -0
  1410. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +4 -0
  1411. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +4 -0
  1412. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +2 -0
  1413. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +3 -0
  1414. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +4 -0
  1415. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor_cont.hpp +9 -2
  1416. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/thread_executor.hpp +6 -0
  1417. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/work.hpp +3 -1
  1418. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +6 -2
  1419. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +1 -0
  1420. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +2 -1
  1421. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +1 -0
  1422. data/src/cxx_supportlib/vendor-modified/boost/thread/interruption.hpp +22 -0
  1423. data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp.orig +54 -0
  1424. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_lockable.hpp +7 -2
  1425. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable.hpp +16 -12
  1426. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable_adapter.hpp +3 -4
  1427. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +18 -24
  1428. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +6 -13
  1429. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +11 -37
  1430. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +29 -28
  1431. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +1 -1
  1432. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +163 -18
  1433. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +1 -69
  1434. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +19 -19
  1435. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +1 -1
  1436. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +9 -6
  1437. data/src/cxx_supportlib/vendor-modified/boost/thread/tss.hpp +23 -41
  1438. data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +3 -0
  1439. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +1 -1
  1440. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +138 -59
  1441. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +15 -11
  1442. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +51 -0
  1443. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
  1444. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +1 -1
  1445. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +1 -1
  1446. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +1 -1
  1447. data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +1 -1
  1448. data/src/cxx_supportlib/vendor-modified/boost/type_traits/alignment_of.hpp +3 -3
  1449. data/src/cxx_supportlib/vendor-modified/boost/type_traits/conjunction.hpp +40 -0
  1450. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv_ref.hpp +31 -0
  1451. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_reference.hpp +35 -0
  1452. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +25 -4
  1453. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +6 -6
  1454. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +6 -6
  1455. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +6 -6
  1456. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +3 -3
  1457. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +102 -6
  1458. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +415 -255
  1459. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -1
  1460. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +1345 -1542
  1461. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +4 -4
  1462. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +143 -28
  1463. data/src/cxx_supportlib/vendor-modified/boost/type_traits/disjunction.hpp +40 -0
  1464. data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +2 -2
  1465. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +6 -6
  1466. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +6 -6
  1467. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_copy.hpp +1 -1
  1468. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +6 -6
  1469. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +1 -1
  1470. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +2 -2
  1471. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +1 -1
  1472. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +2 -2
  1473. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_and_derived.hpp +2 -2
  1474. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_bounded_array.hpp +42 -0
  1475. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +1 -1
  1476. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_compound.hpp +1 -1
  1477. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +1 -1
  1478. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +1 -1
  1479. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +3 -3
  1480. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +1 -1
  1481. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -1
  1482. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +3 -3
  1483. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_enum.hpp +4 -4
  1484. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_fundamental.hpp +1 -1
  1485. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -3
  1486. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_lvalue_reference.hpp +1 -1
  1487. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_pointer.hpp +1 -1
  1488. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pointer.hpp +1 -1
  1489. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_same.hpp +1 -1
  1490. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_scoped_enum.hpp +26 -0
  1491. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_signed.hpp +2 -2
  1492. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_trivially_copyable.hpp +27 -0
  1493. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unbounded_array.hpp +41 -0
  1494. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unscoped_enum.hpp +25 -0
  1495. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unsigned.hpp +2 -2
  1496. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +2 -2
  1497. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +1 -1
  1498. data/src/cxx_supportlib/vendor-modified/boost/type_traits/negation.hpp +23 -0
  1499. data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +4 -4
  1500. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
  1501. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
  1502. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
  1503. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
  1504. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
  1505. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -2
  1506. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +1 -0
  1507. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +1 -0
  1508. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +3 -3
  1509. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +3 -42
  1510. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +4 -43
  1511. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +29 -67
  1512. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1513. data/src/nginx_module/Configuration.c +3 -3
  1514. data/src/nginx_module/config +2 -0
  1515. data/src/nginx_module/ngx_http_passenger_module.c +2 -2
  1516. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  1517. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +1 -1
  1518. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +4 -1
  1519. data/src/ruby_supportlib/phusion_passenger/common_library.rb +2 -0
  1520. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +1 -1
  1521. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +1 -1
  1522. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -1
  1523. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +17 -9
  1524. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -3
  1525. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +3 -0
  1526. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -1
  1527. metadata +302 -70
  1528. data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +0 -468
  1529. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +0 -175
  1530. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +0 -22
  1531. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +0 -228
  1532. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +0 -67
  1533. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +0 -878
  1534. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +0 -93
  1535. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +0 -52
  1536. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +0 -202
  1537. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +0 -281
  1538. data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +0 -468
  1539. data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +0 -418
  1540. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +0 -251
  1541. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +0 -144
  1542. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +0 -374
  1543. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +0 -414
  1544. data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +0 -212
  1545. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +0 -275
  1546. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +0 -185
  1547. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +0 -216
  1548. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +0 -212
  1549. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +0 -71
  1550. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +0 -39
  1551. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +0 -37
  1552. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +0 -40
  1553. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lockpool.hpp +0 -51
  1554. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations.hpp +0 -24
  1555. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_fwd.hpp +0 -35
  1556. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +0 -30
  1557. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +0 -162
  1558. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +0 -392
  1559. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +0 -563
  1560. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +0 -207
  1561. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +0 -89
  1562. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1563. data/src/cxx_supportlib/vendor-modified/boost/detail/endian.hpp +0 -11
  1564. data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +0 -39
  1565. data/src/cxx_supportlib/vendor-modified/boost/detail/sp_typeinfo.hpp +0 -36
  1566. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/overloads.hpp +0 -88
  1567. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +0 -28
  1568. data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +0 -45
  1569. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_solaris.hpp +0 -59
  1570. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +0 -151
  1571. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +0 -161
  1572. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +0 -116
  1573. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +0 -69
@@ -0,0 +1,48 @@
1
+ //
2
+ // execution.hpp
3
+ // ~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef BOOST_ASIO_EXECUTION_HPP
12
+ #define BOOST_ASIO_EXECUTION_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include <boost/asio/execution/allocator.hpp>
19
+ #include <boost/asio/execution/any_executor.hpp>
20
+ #include <boost/asio/execution/bad_executor.hpp>
21
+ #include <boost/asio/execution/blocking.hpp>
22
+ #include <boost/asio/execution/blocking_adaptation.hpp>
23
+ #include <boost/asio/execution/bulk_execute.hpp>
24
+ #include <boost/asio/execution/bulk_guarantee.hpp>
25
+ #include <boost/asio/execution/connect.hpp>
26
+ #include <boost/asio/execution/context.hpp>
27
+ #include <boost/asio/execution/context_as.hpp>
28
+ #include <boost/asio/execution/execute.hpp>
29
+ #include <boost/asio/execution/executor.hpp>
30
+ #include <boost/asio/execution/invocable_archetype.hpp>
31
+ #include <boost/asio/execution/mapping.hpp>
32
+ #include <boost/asio/execution/occupancy.hpp>
33
+ #include <boost/asio/execution/operation_state.hpp>
34
+ #include <boost/asio/execution/outstanding_work.hpp>
35
+ #include <boost/asio/execution/prefer_only.hpp>
36
+ #include <boost/asio/execution/receiver.hpp>
37
+ #include <boost/asio/execution/receiver_invocation_error.hpp>
38
+ #include <boost/asio/execution/relationship.hpp>
39
+ #include <boost/asio/execution/schedule.hpp>
40
+ #include <boost/asio/execution/scheduler.hpp>
41
+ #include <boost/asio/execution/sender.hpp>
42
+ #include <boost/asio/execution/set_done.hpp>
43
+ #include <boost/asio/execution/set_error.hpp>
44
+ #include <boost/asio/execution/set_value.hpp>
45
+ #include <boost/asio/execution/start.hpp>
46
+ #include <boost/asio/execution/submit.hpp>
47
+
48
+ #endif // BOOST_ASIO_EXECUTION_HPP
@@ -0,0 +1,251 @@
1
+ //
2
+ // execution/allocator.hpp
3
+ // ~~~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef BOOST_ASIO_EXECUTION_ALLOCATOR_HPP
12
+ #define BOOST_ASIO_EXECUTION_ALLOCATOR_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include <boost/asio/detail/config.hpp>
19
+ #include <boost/asio/detail/type_traits.hpp>
20
+ #include <boost/asio/execution/executor.hpp>
21
+ #include <boost/asio/execution/scheduler.hpp>
22
+ #include <boost/asio/execution/sender.hpp>
23
+ #include <boost/asio/is_applicable_property.hpp>
24
+ #include <boost/asio/traits/query_static_constexpr_member.hpp>
25
+ #include <boost/asio/traits/static_query.hpp>
26
+
27
+ #include <boost/asio/detail/push_options.hpp>
28
+
29
+ namespace boost {
30
+ namespace asio {
31
+
32
+ #if defined(GENERATING_DOCUMENTATION)
33
+
34
+ namespace execution {
35
+
36
+ /// A property to describe which allocator an executor will use to allocate the
37
+ /// memory required to store a submitted function object.
38
+ template <typename ProtoAllocator>
39
+ struct allocator_t
40
+ {
41
+ /// The allocator_t property applies to executors, senders, and schedulers.
42
+ template <typename T>
43
+ static constexpr bool is_applicable_property_v =
44
+ is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>;
45
+
46
+ /// The allocator_t property can be required.
47
+ static constexpr bool is_requirable = true;
48
+
49
+ /// The allocator_t property can be preferred.
50
+ static constexpr bool is_preferable = true;
51
+
52
+ /// Default constructor.
53
+ constexpr allocator_t();
54
+
55
+ /// Obtain the allocator stored in the allocator_t property object.
56
+ /**
57
+ * Present only if @c ProtoAllocator is non-void.
58
+ */
59
+ constexpr ProtoAllocator value() const;
60
+
61
+ /// Create an allocator_t object with a different allocator.
62
+ /**
63
+ * Present only if @c ProtoAllocator is void.
64
+ */
65
+ template <typename OtherAllocator>
66
+ allocator_t<OtherAllocator operator()(const OtherAllocator& a);
67
+ };
68
+
69
+ /// A special value used for accessing the allocator_t property.
70
+ constexpr allocator_t<void> allocator;
71
+
72
+ } // namespace execution
73
+
74
+ #else // defined(GENERATING_DOCUMENTATION)
75
+
76
+ namespace execution {
77
+
78
+ template <typename ProtoAllocator>
79
+ struct allocator_t
80
+ {
81
+ #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES)
82
+ template <typename T>
83
+ BOOST_ASIO_STATIC_CONSTEXPR(bool,
84
+ is_applicable_property_v = is_executor<T>::value
85
+ || is_sender<T>::value || is_scheduler<T>::value);
86
+ #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES)
87
+
88
+ BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true);
89
+ BOOST_ASIO_STATIC_CONSTEXPR(bool, is_preferable = true);
90
+
91
+ #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
92
+ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
93
+ template <typename T>
94
+ static BOOST_ASIO_CONSTEXPR
95
+ typename traits::query_static_constexpr_member<T, allocator_t>::result_type
96
+ static_query()
97
+ BOOST_ASIO_NOEXCEPT_IF((
98
+ traits::query_static_constexpr_member<T, allocator_t>::is_noexcept))
99
+ {
100
+ return traits::query_static_constexpr_member<T, allocator_t>::value();
101
+ }
102
+
103
+ template <typename E, typename T = decltype(allocator_t::static_query<E>())>
104
+ static BOOST_ASIO_CONSTEXPR const T static_query_v
105
+ = allocator_t::static_query<E>();
106
+ #endif // defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
107
+ // && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
108
+
109
+ BOOST_ASIO_CONSTEXPR ProtoAllocator value() const
110
+ {
111
+ return a_;
112
+ }
113
+
114
+ private:
115
+ friend struct allocator_t<void>;
116
+
117
+ explicit BOOST_ASIO_CONSTEXPR allocator_t(const ProtoAllocator& a)
118
+ : a_(a)
119
+ {
120
+ }
121
+
122
+ ProtoAllocator a_;
123
+ };
124
+
125
+ #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
126
+ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
127
+ template <typename ProtoAllocator> template <typename E, typename T>
128
+ const T allocator_t<ProtoAllocator>::static_query_v;
129
+ #endif // defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
130
+ // && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
131
+
132
+ template <>
133
+ struct allocator_t<void>
134
+ {
135
+ #if defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES)
136
+ template <typename T>
137
+ BOOST_ASIO_STATIC_CONSTEXPR(bool,
138
+ is_applicable_property_v = is_executor<T>::value
139
+ || is_sender<T>::value || is_scheduler<T>::value);
140
+ #endif // defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES)
141
+
142
+ BOOST_ASIO_STATIC_CONSTEXPR(bool, is_requirable = true);
143
+ BOOST_ASIO_STATIC_CONSTEXPR(bool, is_preferable = true);
144
+
145
+ BOOST_ASIO_CONSTEXPR allocator_t()
146
+ {
147
+ }
148
+
149
+ #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
150
+ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
151
+ template <typename T>
152
+ static BOOST_ASIO_CONSTEXPR
153
+ typename traits::query_static_constexpr_member<T, allocator_t>::result_type
154
+ static_query()
155
+ BOOST_ASIO_NOEXCEPT_IF((
156
+ traits::query_static_constexpr_member<T, allocator_t>::is_noexcept))
157
+ {
158
+ return traits::query_static_constexpr_member<T, allocator_t>::value();
159
+ }
160
+
161
+ template <typename E, typename T = decltype(allocator_t::static_query<E>())>
162
+ static BOOST_ASIO_CONSTEXPR const T static_query_v
163
+ = allocator_t::static_query<E>();
164
+ #endif // defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
165
+ // && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
166
+
167
+ template <typename OtherProtoAllocator>
168
+ BOOST_ASIO_CONSTEXPR allocator_t<OtherProtoAllocator> operator()(
169
+ const OtherProtoAllocator& a) const
170
+ {
171
+ return allocator_t<OtherProtoAllocator>(a);
172
+ }
173
+ };
174
+
175
+ #if defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
176
+ && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
177
+ template <typename E, typename T>
178
+ const T allocator_t<void>::static_query_v;
179
+ #endif // defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
180
+ // && defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
181
+
182
+ #if defined(BOOST_ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION)
183
+ constexpr allocator_t<void> allocator;
184
+ #else // defined(BOOST_ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION)
185
+ template <typename T>
186
+ struct allocator_instance
187
+ {
188
+ static allocator_t<T> instance;
189
+ };
190
+
191
+ template <typename T>
192
+ allocator_t<T> allocator_instance<T>::instance;
193
+
194
+ namespace {
195
+ static const allocator_t<void>& allocator = allocator_instance<void>::instance;
196
+ } // namespace
197
+ #endif
198
+
199
+ } // namespace execution
200
+
201
+ #if !defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES)
202
+
203
+ template <typename T, typename ProtoAllocator>
204
+ struct is_applicable_property<T, execution::allocator_t<ProtoAllocator> >
205
+ : integral_constant<bool,
206
+ execution::is_executor<T>::value
207
+ || execution::is_sender<T>::value
208
+ || execution::is_scheduler<T>::value>
209
+ {
210
+ };
211
+
212
+ #endif // !defined(BOOST_ASIO_HAS_VARIABLE_TEMPLATES)
213
+
214
+ namespace traits {
215
+
216
+ #if !defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
217
+ || !defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
218
+
219
+ template <typename T, typename ProtoAllocator>
220
+ struct static_query<T, execution::allocator_t<ProtoAllocator>,
221
+ typename enable_if<
222
+ traits::query_static_constexpr_member<T,
223
+ execution::allocator_t<ProtoAllocator> >::is_valid
224
+ >::type>
225
+ {
226
+ BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
227
+ BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
228
+
229
+ typedef typename traits::query_static_constexpr_member<T,
230
+ execution::allocator_t<ProtoAllocator> >::result_type result_type;
231
+
232
+ static BOOST_ASIO_CONSTEXPR result_type value()
233
+ {
234
+ return traits::query_static_constexpr_member<T,
235
+ execution::allocator_t<ProtoAllocator> >::value();
236
+ }
237
+ };
238
+
239
+ #endif // !defined(BOOST_ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
240
+ // || !defined(BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
241
+
242
+ } // namespace traits
243
+
244
+ #endif // defined(GENERATING_DOCUMENTATION)
245
+
246
+ } // namespace asio
247
+ } // namespace boost
248
+
249
+ #include <boost/asio/detail/pop_options.hpp>
250
+
251
+ #endif // BOOST_ASIO_EXECUTION_ALLOCATOR_HPP
@@ -0,0 +1,2266 @@
1
+ //
2
+ // execution/any_executor.hpp
3
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef BOOST_ASIO_EXECUTION_ANY_EXECUTOR_HPP
12
+ #define BOOST_ASIO_EXECUTION_ANY_EXECUTOR_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include <boost/asio/detail/config.hpp>
19
+ #include <new>
20
+ #include <typeinfo>
21
+ #include <boost/asio/detail/assert.hpp>
22
+ #include <boost/asio/detail/cstddef.hpp>
23
+ #include <boost/asio/detail/executor_function.hpp>
24
+ #include <boost/asio/detail/memory.hpp>
25
+ #include <boost/asio/detail/non_const_lvalue.hpp>
26
+ #include <boost/asio/detail/scoped_ptr.hpp>
27
+ #include <boost/asio/detail/type_traits.hpp>
28
+ #include <boost/asio/detail/throw_exception.hpp>
29
+ #include <boost/asio/detail/variadic_templates.hpp>
30
+ #include <boost/asio/execution/bad_executor.hpp>
31
+ #include <boost/asio/execution/blocking.hpp>
32
+ #include <boost/asio/execution/execute.hpp>
33
+ #include <boost/asio/execution/executor.hpp>
34
+ #include <boost/asio/prefer.hpp>
35
+ #include <boost/asio/query.hpp>
36
+ #include <boost/asio/require.hpp>
37
+
38
+ #include <boost/asio/detail/push_options.hpp>
39
+
40
+ namespace boost {
41
+ namespace asio {
42
+
43
+ #if defined(GENERATING_DOCUMENTATION)
44
+
45
+ namespace execution {
46
+
47
+ /// Polymorphic executor wrapper.
48
+ template <typename... SupportableProperties>
49
+ class any_executor
50
+ {
51
+ public:
52
+ /// Default constructor.
53
+ any_executor() noexcept;
54
+
55
+ /// Construct in an empty state. Equivalent effects to default constructor.
56
+ any_executor(nullptr_t) noexcept;
57
+
58
+ /// Copy constructor.
59
+ any_executor(const any_executor& e) noexcept;
60
+
61
+ /// Move constructor.
62
+ any_executor(any_executor&& e) noexcept;
63
+
64
+ /// Construct to point to the same target as another any_executor.
65
+ template <class... OtherSupportableProperties>
66
+ any_executor(any_executor<OtherSupportableProperties...> e);
67
+
68
+ /// Construct a polymorphic wrapper for the specified executor.
69
+ template <typename Executor>
70
+ any_executor(Executor e);
71
+
72
+ /// Assignment operator.
73
+ any_executor& operator=(const any_executor& e) noexcept;
74
+
75
+ /// Move assignment operator.
76
+ any_executor& operator=(any_executor&& e) noexcept;
77
+
78
+ /// Assignment operator that sets the polymorphic wrapper to the empty state.
79
+ any_executor& operator=(nullptr_t);
80
+
81
+ /// Assignment operator to create a polymorphic wrapper for the specified
82
+ /// executor.
83
+ template <typename Executor>
84
+ any_executor& operator=(Executor e);
85
+
86
+ /// Destructor.
87
+ ~any_executor();
88
+
89
+ /// Swap targets with another polymorphic wrapper.
90
+ void swap(any_executor& other) noexcept;
91
+
92
+ /// Obtain a polymorphic wrapper with the specified property.
93
+ /**
94
+ * Do not call this function directly. It is intended for use with the
95
+ * boost::asio::require and boost::asio::prefer customisation points.
96
+ *
97
+ * For example:
98
+ * @code execution::any_executor<execution::blocking_t::possibly_t> ex = ...;
99
+ * auto ex2 = boost::asio::requre(ex, execution::blocking.possibly); @endcode
100
+ */
101
+ template <typename Property>
102
+ any_executor require(Property) const;
103
+
104
+ /// Obtain a polymorphic wrapper with the specified property.
105
+ /**
106
+ * Do not call this function directly. It is intended for use with the
107
+ * boost::asio::prefer customisation point.
108
+ *
109
+ * For example:
110
+ * @code execution::any_executor<execution::blocking_t::possibly_t> ex = ...;
111
+ * auto ex2 = boost::asio::prefer(ex, execution::blocking.possibly); @endcode
112
+ */
113
+ template <typename Property>
114
+ any_executor prefer(Property) const;
115
+
116
+ /// Obtain the value associated with the specified property.
117
+ /**
118
+ * Do not call this function directly. It is intended for use with the
119
+ * boost::asio::query customisation point.
120
+ *
121
+ * For example:
122
+ * @code execution::any_executor<execution::occupancy_t> ex = ...;
123
+ * size_t n = boost::asio::query(ex, execution::occupancy); @endcode
124
+ */
125
+ template <typename Property>
126
+ typename Property::polymorphic_query_result_type query(Property) const;
127
+
128
+ /// Execute the function on the target executor.
129
+ /**
130
+ * Do not call this function directly. It is intended for use with the
131
+ * execution::execute customisation point.
132
+ *
133
+ * For example:
134
+ * @code execution::any_executor<> ex = ...;
135
+ * execution::execute(ex, my_function_object); @endcode
136
+ *
137
+ * Throws boost::asio::bad_executor if the polymorphic wrapper has no target.
138
+ */
139
+ template <typename Function>
140
+ void execute(Function&& f) const;
141
+
142
+ /// Obtain the underlying execution context.
143
+ /**
144
+ * This function is provided for backward compatibility. It is automatically
145
+ * defined when the @c SupportableProperties... list includes a property of
146
+ * type <tt>execution::context_as<U></tt>, for some type <tt>U</tt>.
147
+ */
148
+ automatically_determined context() const;
149
+
150
+ /// Determine whether the wrapper has a target executor.
151
+ /**
152
+ * @returns @c true if the polymorphic wrapper has a target executor,
153
+ * otherwise false.
154
+ */
155
+ explicit operator bool() const noexcept;
156
+
157
+ /// Get the type of the target executor.
158
+ const type_info& target_type() const noexcept;
159
+
160
+ /// Get a pointer to the target executor.
161
+ template <typename Executor> Executor* target() noexcept;
162
+
163
+ /// Get a pointer to the target executor.
164
+ template <typename Executor> const Executor* target() const noexcept;
165
+ };
166
+
167
+ /// Equality operator.
168
+ /**
169
+ * @relates any_executor
170
+ */
171
+ template <typename... SupportableProperties>
172
+ bool operator==(const any_executor<SupportableProperties...>& a,
173
+ const any_executor<SupportableProperties...>& b) noexcept;
174
+
175
+ /// Equality operator.
176
+ /**
177
+ * @relates any_executor
178
+ */
179
+ template <typename... SupportableProperties>
180
+ bool operator==(const any_executor<SupportableProperties...>& a,
181
+ nullptr_t) noexcept;
182
+
183
+ /// Equality operator.
184
+ /**
185
+ * @relates any_executor
186
+ */
187
+ template <typename... SupportableProperties>
188
+ bool operator==(nullptr_t,
189
+ const any_executor<SupportableProperties...>& b) noexcept;
190
+
191
+ /// Inequality operator.
192
+ /**
193
+ * @relates any_executor
194
+ */
195
+ template <typename... SupportableProperties>
196
+ bool operator!=(const any_executor<SupportableProperties...>& a,
197
+ const any_executor<SupportableProperties...>& b) noexcept;
198
+
199
+ /// Inequality operator.
200
+ /**
201
+ * @relates any_executor
202
+ */
203
+ template <typename... SupportableProperties>
204
+ bool operator!=(const any_executor<SupportableProperties...>& a,
205
+ nullptr_t) noexcept;
206
+
207
+ /// Inequality operator.
208
+ /**
209
+ * @relates any_executor
210
+ */
211
+ template <typename... SupportableProperties>
212
+ bool operator!=(nullptr_t,
213
+ const any_executor<SupportableProperties...>& b) noexcept;
214
+
215
+ } // namespace execution
216
+
217
+ #else // defined(GENERATING_DOCUMENTATION)
218
+
219
+ namespace execution {
220
+
221
+ #if !defined(BOOST_ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL)
222
+ #define BOOST_ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL
223
+
224
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
225
+
226
+ template <typename... SupportableProperties>
227
+ class any_executor;
228
+
229
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
230
+
231
+ template <typename = void, typename = void, typename = void,
232
+ typename = void, typename = void, typename = void,
233
+ typename = void, typename = void, typename = void>
234
+ class any_executor;
235
+
236
+ #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
237
+
238
+ #endif // !defined(BOOST_ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL)
239
+
240
+ template <typename U>
241
+ struct context_as_t;
242
+
243
+ namespace detail {
244
+
245
+ // Traits used to detect whether a property is requirable or preferable, taking
246
+ // into account that T::is_requirable or T::is_preferable may not not be well
247
+ // formed.
248
+
249
+ template <typename T, typename = void>
250
+ struct is_requirable : false_type {};
251
+
252
+ template <typename T>
253
+ struct is_requirable<T, typename enable_if<T::is_requirable>::type> :
254
+ true_type {};
255
+
256
+ template <typename T, typename = void>
257
+ struct is_preferable : false_type {};
258
+
259
+ template <typename T>
260
+ struct is_preferable<T, typename enable_if<T::is_preferable>::type> :
261
+ true_type {};
262
+
263
+ // Trait used to detect context_as property, for backward compatibility.
264
+
265
+ template <typename T>
266
+ struct is_context_as : false_type {};
267
+
268
+ template <typename U>
269
+ struct is_context_as<context_as_t<U> > : true_type {};
270
+
271
+ // Helper template to:
272
+ // - Check if a target can supply the supportable properties.
273
+ // - Find the first convertible-from-T property in the list.
274
+
275
+ template <std::size_t I, typename Props>
276
+ struct supportable_properties;
277
+
278
+ template <std::size_t I, typename Prop>
279
+ struct supportable_properties<I, void(Prop)>
280
+ {
281
+ template <typename T>
282
+ struct is_valid_target : integral_constant<bool,
283
+ (
284
+ is_requirable<Prop>::value
285
+ ? can_require<T, Prop>::value
286
+ : true
287
+ )
288
+ &&
289
+ (
290
+ is_preferable<Prop>::value
291
+ ? can_prefer<T, Prop>::value
292
+ : true
293
+ )
294
+ &&
295
+ (
296
+ !is_requirable<Prop>::value && !is_preferable<Prop>::value
297
+ ? can_query<T, Prop>::value
298
+ : true
299
+ )
300
+ >
301
+ {
302
+ };
303
+
304
+ struct found
305
+ {
306
+ BOOST_ASIO_STATIC_CONSTEXPR(bool, value = true);
307
+ typedef Prop type;
308
+ typedef typename Prop::polymorphic_query_result_type query_result_type;
309
+ BOOST_ASIO_STATIC_CONSTEXPR(std::size_t, index = I);
310
+ };
311
+
312
+ struct not_found
313
+ {
314
+ BOOST_ASIO_STATIC_CONSTEXPR(bool, value = false);
315
+ };
316
+
317
+ template <typename T>
318
+ struct find_convertible_property :
319
+ conditional<
320
+ is_same<T, Prop>::value || is_convertible<T, Prop>::value,
321
+ found,
322
+ not_found
323
+ >::type {};
324
+
325
+ template <typename T>
326
+ struct find_convertible_requirable_property :
327
+ conditional<
328
+ is_requirable<Prop>::value
329
+ && (is_same<T, Prop>::value || is_convertible<T, Prop>::value),
330
+ found,
331
+ not_found
332
+ >::type {};
333
+
334
+ template <typename T>
335
+ struct find_convertible_preferable_property :
336
+ conditional<
337
+ is_preferable<Prop>::value
338
+ && (is_same<T, Prop>::value || is_convertible<T, Prop>::value),
339
+ found,
340
+ not_found
341
+ >::type {};
342
+
343
+ struct find_context_as_property :
344
+ conditional<
345
+ is_context_as<Prop>::value,
346
+ found,
347
+ not_found
348
+ >::type {};
349
+ };
350
+
351
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
352
+
353
+ template <std::size_t I, typename Head, typename... Tail>
354
+ struct supportable_properties<I, void(Head, Tail...)>
355
+ {
356
+ template <typename T>
357
+ struct is_valid_target : integral_constant<bool,
358
+ (
359
+ supportable_properties<I,
360
+ void(Head)>::template is_valid_target<T>::value
361
+ &&
362
+ supportable_properties<I + 1,
363
+ void(Tail...)>::template is_valid_target<T>::value
364
+ )
365
+ >
366
+ {
367
+ };
368
+
369
+ template <typename T>
370
+ struct find_convertible_property :
371
+ conditional<
372
+ is_convertible<T, Head>::value,
373
+ typename supportable_properties<I, void(Head)>::found,
374
+ typename supportable_properties<I + 1,
375
+ void(Tail...)>::template find_convertible_property<T>
376
+ >::type {};
377
+
378
+ template <typename T>
379
+ struct find_convertible_requirable_property :
380
+ conditional<
381
+ is_requirable<Head>::value
382
+ && is_convertible<T, Head>::value,
383
+ typename supportable_properties<I, void(Head)>::found,
384
+ typename supportable_properties<I + 1,
385
+ void(Tail...)>::template find_convertible_requirable_property<T>
386
+ >::type {};
387
+
388
+ template <typename T>
389
+ struct find_convertible_preferable_property :
390
+ conditional<
391
+ is_preferable<Head>::value
392
+ && is_convertible<T, Head>::value,
393
+ typename supportable_properties<I, void(Head)>::found,
394
+ typename supportable_properties<I + 1,
395
+ void(Tail...)>::template find_convertible_preferable_property<T>
396
+ >::type {};
397
+
398
+ struct find_context_as_property :
399
+ conditional<
400
+ is_context_as<Head>::value,
401
+ typename supportable_properties<I, void(Head)>::found,
402
+ typename supportable_properties<I + 1,
403
+ void(Tail...)>::find_context_as_property
404
+ >::type {};
405
+ };
406
+
407
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
408
+
409
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROPS_BASE_DEF(n) \
410
+ template <std::size_t I, \
411
+ typename Head, BOOST_ASIO_VARIADIC_TPARAMS(n)> \
412
+ struct supportable_properties<I, \
413
+ void(Head, BOOST_ASIO_VARIADIC_TARGS(n))> \
414
+ { \
415
+ template <typename T> \
416
+ struct is_valid_target : integral_constant<bool, \
417
+ ( \
418
+ supportable_properties<I, \
419
+ void(Head)>::template is_valid_target<T>::value \
420
+ && \
421
+ supportable_properties<I + 1, \
422
+ void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
423
+ is_valid_target<T>::value \
424
+ ) \
425
+ > \
426
+ { \
427
+ }; \
428
+ \
429
+ template <typename T> \
430
+ struct find_convertible_property : \
431
+ conditional< \
432
+ is_convertible<T, Head>::value, \
433
+ typename supportable_properties<I, void(Head)>::found, \
434
+ typename supportable_properties<I + 1, \
435
+ void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
436
+ find_convertible_property<T> \
437
+ >::type {}; \
438
+ \
439
+ template <typename T> \
440
+ struct find_convertible_requirable_property : \
441
+ conditional< \
442
+ is_requirable<Head>::value \
443
+ && is_convertible<T, Head>::value, \
444
+ typename supportable_properties<I, void(Head)>::found, \
445
+ typename supportable_properties<I + 1, \
446
+ void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
447
+ find_convertible_requirable_property<T> \
448
+ >::type {}; \
449
+ \
450
+ template <typename T> \
451
+ struct find_convertible_preferable_property : \
452
+ conditional< \
453
+ is_preferable<Head>::value \
454
+ && is_convertible<T, Head>::value, \
455
+ typename supportable_properties<I, void(Head)>::found, \
456
+ typename supportable_properties<I + 1, \
457
+ void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
458
+ find_convertible_preferable_property<T> \
459
+ >::type {}; \
460
+ \
461
+ struct find_context_as_property : \
462
+ conditional< \
463
+ is_context_as<Head>::value, \
464
+ typename supportable_properties<I, void(Head)>::found, \
465
+ typename supportable_properties<I + 1, void( \
466
+ BOOST_ASIO_VARIADIC_TARGS(n))>::find_context_as_property \
467
+ >::type {}; \
468
+ }; \
469
+ /**/
470
+ BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROPS_BASE_DEF)
471
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROPS_BASE_DEF
472
+
473
+ #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
474
+
475
+ template <typename T, typename Props>
476
+ struct is_valid_target_executor :
477
+ conditional<
478
+ is_executor<T>::value,
479
+ typename supportable_properties<0, Props>::template is_valid_target<T>,
480
+ false_type
481
+ >::type
482
+ {
483
+ };
484
+
485
+ class any_executor_base
486
+ {
487
+ public:
488
+ any_executor_base() BOOST_ASIO_NOEXCEPT
489
+ : object_fns_(object_fns_table<void>()),
490
+ target_(0),
491
+ target_fns_(target_fns_table<void>())
492
+ {
493
+ }
494
+
495
+ template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
496
+ any_executor_base(Executor ex, false_type)
497
+ : target_fns_(target_fns_table<Executor>(
498
+ any_executor_base::query_blocking(ex,
499
+ can_query<const Executor&, const execution::blocking_t&>())
500
+ == execution::blocking.always))
501
+ {
502
+ any_executor_base::construct_object(ex,
503
+ integral_constant<bool,
504
+ sizeof(Executor) <= sizeof(object_type)
505
+ && alignment_of<Executor>::value <= alignment_of<object_type>::value
506
+ >());
507
+ }
508
+
509
+ template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
510
+ any_executor_base(Executor other, true_type)
511
+ : object_fns_(object_fns_table<boost::asio::detail::shared_ptr<void> >()),
512
+ target_fns_(other.target_fns_)
513
+ {
514
+ boost::asio::detail::shared_ptr<Executor> p =
515
+ boost::asio::detail::make_shared<Executor>(
516
+ BOOST_ASIO_MOVE_CAST(Executor)(other));
517
+ target_ = p->template target<void>();
518
+ new (&object_) boost::asio::detail::shared_ptr<void>(
519
+ BOOST_ASIO_MOVE_CAST(boost::asio::detail::shared_ptr<Executor>)(p));
520
+ }
521
+
522
+ any_executor_base(const any_executor_base& other) BOOST_ASIO_NOEXCEPT
523
+ : object_fns_(other.object_fns_),
524
+ target_fns_(other.target_fns_)
525
+ {
526
+ object_fns_->copy(*this, other);
527
+ }
528
+
529
+ ~any_executor_base() BOOST_ASIO_NOEXCEPT
530
+ {
531
+ object_fns_->destroy(*this);
532
+ }
533
+
534
+ any_executor_base& operator=(
535
+ const any_executor_base& other) BOOST_ASIO_NOEXCEPT
536
+ {
537
+ if (this != &other)
538
+ {
539
+ object_fns_->destroy(*this);
540
+ object_fns_ = other.object_fns_;
541
+ target_fns_ = other.target_fns_;
542
+ object_fns_->copy(*this, other);
543
+ }
544
+ return *this;
545
+ }
546
+
547
+ any_executor_base& operator=(nullptr_t) BOOST_ASIO_NOEXCEPT
548
+ {
549
+ object_fns_->destroy(*this);
550
+ target_ = 0;
551
+ object_fns_ = object_fns_table<void>();
552
+ target_fns_ = target_fns_table<void>();
553
+ return *this;
554
+ }
555
+
556
+ #if defined(BOOST_ASIO_HAS_MOVE)
557
+
558
+ any_executor_base(any_executor_base&& other) BOOST_ASIO_NOEXCEPT
559
+ : object_fns_(other.object_fns_),
560
+ target_fns_(other.target_fns_)
561
+ {
562
+ other.object_fns_ = object_fns_table<void>();
563
+ other.target_fns_ = target_fns_table<void>();
564
+ object_fns_->move(*this, other);
565
+ other.target_ = 0;
566
+ }
567
+
568
+ any_executor_base& operator=(
569
+ any_executor_base&& other) BOOST_ASIO_NOEXCEPT
570
+ {
571
+ if (this != &other)
572
+ {
573
+ object_fns_->destroy(*this);
574
+ object_fns_ = other.object_fns_;
575
+ other.object_fns_ = object_fns_table<void>();
576
+ target_fns_ = other.target_fns_;
577
+ other.target_fns_ = target_fns_table<void>();
578
+ object_fns_->move(*this, other);
579
+ other.target_ = 0;
580
+ }
581
+ return *this;
582
+ }
583
+
584
+ #endif // defined(BOOST_ASIO_HAS_MOVE)
585
+
586
+ void swap(any_executor_base& other) BOOST_ASIO_NOEXCEPT
587
+ {
588
+ if (this != &other)
589
+ {
590
+ any_executor_base tmp(BOOST_ASIO_MOVE_CAST(any_executor_base)(other));
591
+ other = BOOST_ASIO_MOVE_CAST(any_executor_base)(*this);
592
+ *this = BOOST_ASIO_MOVE_CAST(any_executor_base)(tmp);
593
+ }
594
+ }
595
+
596
+ template <typename F>
597
+ void execute(BOOST_ASIO_MOVE_ARG(F) f) const
598
+ {
599
+ if (target_fns_->blocking_execute != 0)
600
+ {
601
+ boost::asio::detail::non_const_lvalue<F> f2(f);
602
+ target_fns_->blocking_execute(*this, function_view(f2.value));
603
+ }
604
+ else
605
+ {
606
+ target_fns_->execute(*this,
607
+ function(BOOST_ASIO_MOVE_CAST(F)(f), std::allocator<void>()));
608
+ }
609
+ }
610
+
611
+ template <typename Executor>
612
+ Executor* target()
613
+ {
614
+ return static_cast<Executor*>(target_);
615
+ }
616
+
617
+ template <typename Executor>
618
+ const Executor* target() const
619
+ {
620
+ return static_cast<Executor*>(target_);
621
+ }
622
+
623
+ const std::type_info& target_type() const
624
+ {
625
+ return target_fns_->target_type();
626
+ }
627
+
628
+ struct unspecified_bool_type_t {};
629
+ typedef void (*unspecified_bool_type)(unspecified_bool_type_t);
630
+ static void unspecified_bool_true(unspecified_bool_type_t) {}
631
+
632
+ operator unspecified_bool_type() const BOOST_ASIO_NOEXCEPT
633
+ {
634
+ return target_ ? &any_executor_base::unspecified_bool_true : 0;
635
+ }
636
+
637
+ bool operator!() const BOOST_ASIO_NOEXCEPT
638
+ {
639
+ return target_ == 0;
640
+ }
641
+
642
+ protected:
643
+ bool equality_helper(const any_executor_base& other) const BOOST_ASIO_NOEXCEPT
644
+ {
645
+ if (target_ == other.target_)
646
+ return true;
647
+ if (target_ && !other.target_)
648
+ return false;
649
+ if (!target_ && other.target_)
650
+ return false;
651
+ if (target_fns_ != other.target_fns_)
652
+ return false;
653
+ return target_fns_->equal(*this, other);
654
+ }
655
+
656
+ template <typename Ex>
657
+ Ex& object()
658
+ {
659
+ return *static_cast<Ex*>(static_cast<void*>(&object_));
660
+ }
661
+
662
+ template <typename Ex>
663
+ const Ex& object() const
664
+ {
665
+ return *static_cast<const Ex*>(static_cast<const void*>(&object_));
666
+ }
667
+
668
+ struct object_fns
669
+ {
670
+ void (*destroy)(any_executor_base&);
671
+ void (*copy)(any_executor_base&, const any_executor_base&);
672
+ void (*move)(any_executor_base&, any_executor_base&);
673
+ const void* (*target)(const any_executor_base&);
674
+ };
675
+
676
+ static void destroy_void(any_executor_base&)
677
+ {
678
+ }
679
+
680
+ static void copy_void(any_executor_base& ex1, const any_executor_base&)
681
+ {
682
+ ex1.target_ = 0;
683
+ }
684
+
685
+ static void move_void(any_executor_base& ex1, any_executor_base&)
686
+ {
687
+ ex1.target_ = 0;
688
+ }
689
+
690
+ static const void* target_void(const any_executor_base&)
691
+ {
692
+ return 0;
693
+ }
694
+
695
+ template <typename Obj>
696
+ static const object_fns* object_fns_table(
697
+ typename enable_if<
698
+ is_same<Obj, void>::value
699
+ >::type* = 0)
700
+ {
701
+ static const object_fns fns =
702
+ {
703
+ &any_executor_base::destroy_void,
704
+ &any_executor_base::copy_void,
705
+ &any_executor_base::move_void,
706
+ &any_executor_base::target_void
707
+ };
708
+ return &fns;
709
+ }
710
+
711
+ static void destroy_shared(any_executor_base& ex)
712
+ {
713
+ typedef boost::asio::detail::shared_ptr<void> type;
714
+ ex.object<type>().~type();
715
+ }
716
+
717
+ static void copy_shared(any_executor_base& ex1, const any_executor_base& ex2)
718
+ {
719
+ typedef boost::asio::detail::shared_ptr<void> type;
720
+ new (&ex1.object_) type(ex2.object<type>());
721
+ ex1.target_ = ex2.target_;
722
+ }
723
+
724
+ static void move_shared(any_executor_base& ex1, any_executor_base& ex2)
725
+ {
726
+ typedef boost::asio::detail::shared_ptr<void> type;
727
+ new (&ex1.object_) type(BOOST_ASIO_MOVE_CAST(type)(ex2.object<type>()));
728
+ ex1.target_ = ex2.target_;
729
+ ex2.object<type>().~type();
730
+ }
731
+
732
+ static const void* target_shared(const any_executor_base& ex)
733
+ {
734
+ typedef boost::asio::detail::shared_ptr<void> type;
735
+ return ex.object<type>().get();
736
+ }
737
+
738
+ template <typename Obj>
739
+ static const object_fns* object_fns_table(
740
+ typename enable_if<
741
+ is_same<Obj, boost::asio::detail::shared_ptr<void> >::value
742
+ >::type* = 0)
743
+ {
744
+ static const object_fns fns =
745
+ {
746
+ &any_executor_base::destroy_shared,
747
+ &any_executor_base::copy_shared,
748
+ &any_executor_base::move_shared,
749
+ &any_executor_base::target_shared
750
+ };
751
+ return &fns;
752
+ }
753
+
754
+ template <typename Obj>
755
+ static void destroy_object(any_executor_base& ex)
756
+ {
757
+ ex.object<Obj>().~Obj();
758
+ }
759
+
760
+ template <typename Obj>
761
+ static void copy_object(any_executor_base& ex1, const any_executor_base& ex2)
762
+ {
763
+ new (&ex1.object_) Obj(ex2.object<Obj>());
764
+ ex1.target_ = &ex1.object<Obj>();
765
+ }
766
+
767
+ template <typename Obj>
768
+ static void move_object(any_executor_base& ex1, any_executor_base& ex2)
769
+ {
770
+ new (&ex1.object_) Obj(BOOST_ASIO_MOVE_CAST(Obj)(ex2.object<Obj>()));
771
+ ex1.target_ = &ex1.object<Obj>();
772
+ ex2.object<Obj>().~Obj();
773
+ }
774
+
775
+ template <typename Obj>
776
+ static const void* target_object(const any_executor_base& ex)
777
+ {
778
+ return &ex.object<Obj>();
779
+ }
780
+
781
+ template <typename Obj>
782
+ static const object_fns* object_fns_table(
783
+ typename enable_if<
784
+ !is_same<Obj, void>::value
785
+ && !is_same<Obj, boost::asio::detail::shared_ptr<void> >::value
786
+ >::type* = 0)
787
+ {
788
+ static const object_fns fns =
789
+ {
790
+ &any_executor_base::destroy_object<Obj>,
791
+ &any_executor_base::copy_object<Obj>,
792
+ &any_executor_base::move_object<Obj>,
793
+ &any_executor_base::target_object<Obj>
794
+ };
795
+ return &fns;
796
+ }
797
+
798
+ typedef boost::asio::detail::executor_function function;
799
+ typedef boost::asio::detail::executor_function_view function_view;
800
+
801
+ struct target_fns
802
+ {
803
+ const std::type_info& (*target_type)();
804
+ bool (*equal)(const any_executor_base&, const any_executor_base&);
805
+ void (*execute)(const any_executor_base&, BOOST_ASIO_MOVE_ARG(function));
806
+ void (*blocking_execute)(const any_executor_base&, function_view);
807
+ };
808
+
809
+ static const std::type_info& target_type_void()
810
+ {
811
+ return typeid(void);
812
+ }
813
+
814
+ static bool equal_void(const any_executor_base&, const any_executor_base&)
815
+ {
816
+ return true;
817
+ }
818
+
819
+ static void execute_void(const any_executor_base&,
820
+ BOOST_ASIO_MOVE_ARG(function))
821
+ {
822
+ bad_executor ex;
823
+ boost::asio::detail::throw_exception(ex);
824
+ }
825
+
826
+ static void blocking_execute_void(const any_executor_base&, function_view)
827
+ {
828
+ bad_executor ex;
829
+ boost::asio::detail::throw_exception(ex);
830
+ }
831
+
832
+ template <typename Ex>
833
+ static const target_fns* target_fns_table(
834
+ typename enable_if<
835
+ is_same<Ex, void>::value
836
+ >::type* = 0)
837
+ {
838
+ static const target_fns fns =
839
+ {
840
+ &any_executor_base::target_type_void,
841
+ &any_executor_base::equal_void,
842
+ &any_executor_base::execute_void,
843
+ &any_executor_base::blocking_execute_void
844
+ };
845
+ return &fns;
846
+ }
847
+
848
+ template <typename Ex>
849
+ static const std::type_info& target_type_ex()
850
+ {
851
+ return typeid(Ex);
852
+ }
853
+
854
+ template <typename Ex>
855
+ static bool equal_ex(const any_executor_base& ex1,
856
+ const any_executor_base& ex2)
857
+ {
858
+ return *ex1.target<Ex>() == *ex2.target<Ex>();
859
+ }
860
+
861
+ template <typename Ex>
862
+ static void execute_ex(const any_executor_base& ex,
863
+ BOOST_ASIO_MOVE_ARG(function) f)
864
+ {
865
+ execution::execute(*ex.target<Ex>(), BOOST_ASIO_MOVE_CAST(function)(f));
866
+ }
867
+
868
+ template <typename Ex>
869
+ static void blocking_execute_ex(const any_executor_base& ex, function_view f)
870
+ {
871
+ execution::execute(*ex.target<Ex>(), f);
872
+ }
873
+
874
+ template <typename Ex>
875
+ static const target_fns* target_fns_table(bool is_always_blocking,
876
+ typename enable_if<
877
+ !is_same<Ex, void>::value
878
+ >::type* = 0)
879
+ {
880
+ static const target_fns fns_with_execute =
881
+ {
882
+ &any_executor_base::target_type_ex<Ex>,
883
+ &any_executor_base::equal_ex<Ex>,
884
+ &any_executor_base::execute_ex<Ex>,
885
+ 0
886
+ };
887
+
888
+ static const target_fns fns_with_blocking_execute =
889
+ {
890
+ &any_executor_base::target_type_ex<Ex>,
891
+ &any_executor_base::equal_ex<Ex>,
892
+ 0,
893
+ &any_executor_base::blocking_execute_ex<Ex>
894
+ };
895
+
896
+ return is_always_blocking ? &fns_with_blocking_execute : &fns_with_execute;
897
+ }
898
+
899
+ #if defined(BOOST_ASIO_MSVC)
900
+ # pragma warning (push)
901
+ # pragma warning (disable:4702)
902
+ #endif // defined(BOOST_ASIO_MSVC)
903
+
904
+ static void query_fn_void(void*, const void*, const void*)
905
+ {
906
+ bad_executor ex;
907
+ boost::asio::detail::throw_exception(ex);
908
+ }
909
+
910
+ template <typename Ex, class Prop>
911
+ static void query_fn_non_void(void*, const void* ex, const void* prop,
912
+ typename enable_if<
913
+ boost::asio::can_query<const Ex&, const Prop&>::value
914
+ && is_same<typename Prop::polymorphic_query_result_type, void>::value
915
+ >::type*)
916
+ {
917
+ boost::asio::query(*static_cast<const Ex*>(ex),
918
+ *static_cast<const Prop*>(prop));
919
+ }
920
+
921
+ template <typename Ex, class Prop>
922
+ static void query_fn_non_void(void*, const void*, const void*,
923
+ typename enable_if<
924
+ !boost::asio::can_query<const Ex&, const Prop&>::value
925
+ && is_same<typename Prop::polymorphic_query_result_type, void>::value
926
+ >::type*)
927
+ {
928
+ }
929
+
930
+ template <typename Ex, class Prop>
931
+ static void query_fn_non_void(void* result, const void* ex, const void* prop,
932
+ typename enable_if<
933
+ boost::asio::can_query<const Ex&, const Prop&>::value
934
+ && !is_same<typename Prop::polymorphic_query_result_type, void>::value
935
+ && is_reference<typename Prop::polymorphic_query_result_type>::value
936
+ >::type*)
937
+ {
938
+ *static_cast<typename remove_reference<
939
+ typename Prop::polymorphic_query_result_type>::type**>(result)
940
+ = &static_cast<typename Prop::polymorphic_query_result_type>(
941
+ boost::asio::query(*static_cast<const Ex*>(ex),
942
+ *static_cast<const Prop*>(prop)));
943
+ }
944
+
945
+ template <typename Ex, class Prop>
946
+ static void query_fn_non_void(void*, const void*, const void*,
947
+ typename enable_if<
948
+ !boost::asio::can_query<const Ex&, const Prop&>::value
949
+ && !is_same<typename Prop::polymorphic_query_result_type, void>::value
950
+ && is_reference<typename Prop::polymorphic_query_result_type>::value
951
+ >::type*)
952
+ {
953
+ std::terminate(); // Combination should not be possible.
954
+ }
955
+
956
+ template <typename Ex, class Prop>
957
+ static void query_fn_non_void(void* result, const void* ex, const void* prop,
958
+ typename enable_if<
959
+ boost::asio::can_query<const Ex&, const Prop&>::value
960
+ && !is_same<typename Prop::polymorphic_query_result_type, void>::value
961
+ && is_scalar<typename Prop::polymorphic_query_result_type>::value
962
+ >::type*)
963
+ {
964
+ *static_cast<typename Prop::polymorphic_query_result_type*>(result)
965
+ = static_cast<typename Prop::polymorphic_query_result_type>(
966
+ boost::asio::query(*static_cast<const Ex*>(ex),
967
+ *static_cast<const Prop*>(prop)));
968
+ }
969
+
970
+ template <typename Ex, class Prop>
971
+ static void query_fn_non_void(void* result, const void*, const void*,
972
+ typename enable_if<
973
+ !boost::asio::can_query<const Ex&, const Prop&>::value
974
+ && !is_same<typename Prop::polymorphic_query_result_type, void>::value
975
+ && is_scalar<typename Prop::polymorphic_query_result_type>::value
976
+ >::type*)
977
+ {
978
+ *static_cast<typename Prop::polymorphic_query_result_type*>(result)
979
+ = typename Prop::polymorphic_query_result_type();
980
+ }
981
+
982
+ template <typename Ex, class Prop>
983
+ static void query_fn_non_void(void* result, const void* ex, const void* prop,
984
+ typename enable_if<
985
+ boost::asio::can_query<const Ex&, const Prop&>::value
986
+ && !is_same<typename Prop::polymorphic_query_result_type, void>::value
987
+ && !is_reference<typename Prop::polymorphic_query_result_type>::value
988
+ && !is_scalar<typename Prop::polymorphic_query_result_type>::value
989
+ >::type*)
990
+ {
991
+ *static_cast<typename Prop::polymorphic_query_result_type**>(result)
992
+ = new typename Prop::polymorphic_query_result_type(
993
+ boost::asio::query(*static_cast<const Ex*>(ex),
994
+ *static_cast<const Prop*>(prop)));
995
+ }
996
+
997
+ template <typename Ex, class Prop>
998
+ static void query_fn_non_void(void* result, const void*, const void*, ...)
999
+ {
1000
+ *static_cast<typename Prop::polymorphic_query_result_type**>(result)
1001
+ = new typename Prop::polymorphic_query_result_type();
1002
+ }
1003
+
1004
+ template <typename Ex, class Prop>
1005
+ static void query_fn_impl(void* result, const void* ex, const void* prop,
1006
+ typename enable_if<
1007
+ is_same<Ex, void>::value
1008
+ >::type*)
1009
+ {
1010
+ query_fn_void(result, ex, prop);
1011
+ }
1012
+
1013
+ template <typename Ex, class Prop>
1014
+ static void query_fn_impl(void* result, const void* ex, const void* prop,
1015
+ typename enable_if<
1016
+ !is_same<Ex, void>::value
1017
+ >::type*)
1018
+ {
1019
+ query_fn_non_void<Ex, Prop>(result, ex, prop, 0);
1020
+ }
1021
+
1022
+ template <typename Ex, class Prop>
1023
+ static void query_fn(void* result, const void* ex, const void* prop)
1024
+ {
1025
+ query_fn_impl<Ex, Prop>(result, ex, prop, 0);
1026
+ }
1027
+
1028
+ template <typename Poly, typename Ex, class Prop>
1029
+ static Poly require_fn_impl(const void*, const void*,
1030
+ typename enable_if<
1031
+ is_same<Ex, void>::value
1032
+ >::type*)
1033
+ {
1034
+ bad_executor ex;
1035
+ boost::asio::detail::throw_exception(ex);
1036
+ return Poly();
1037
+ }
1038
+
1039
+ template <typename Poly, typename Ex, class Prop>
1040
+ static Poly require_fn_impl(const void* ex, const void* prop,
1041
+ typename enable_if<
1042
+ !is_same<Ex, void>::value && Prop::is_requirable
1043
+ >::type*)
1044
+ {
1045
+ return boost::asio::require(*static_cast<const Ex*>(ex),
1046
+ *static_cast<const Prop*>(prop));
1047
+ }
1048
+
1049
+ template <typename Poly, typename Ex, class Prop>
1050
+ static Poly require_fn_impl(const void*, const void*, ...)
1051
+ {
1052
+ return Poly();
1053
+ }
1054
+
1055
+ template <typename Poly, typename Ex, class Prop>
1056
+ static Poly require_fn(const void* ex, const void* prop)
1057
+ {
1058
+ return require_fn_impl<Poly, Ex, Prop>(ex, prop, 0);
1059
+ }
1060
+
1061
+ template <typename Poly, typename Ex, class Prop>
1062
+ static Poly prefer_fn_impl(const void*, const void*,
1063
+ typename enable_if<
1064
+ is_same<Ex, void>::value
1065
+ >::type*)
1066
+ {
1067
+ bad_executor ex;
1068
+ boost::asio::detail::throw_exception(ex);
1069
+ return Poly();
1070
+ }
1071
+
1072
+ template <typename Poly, typename Ex, class Prop>
1073
+ static Poly prefer_fn_impl(const void* ex, const void* prop,
1074
+ typename enable_if<
1075
+ !is_same<Ex, void>::value && Prop::is_preferable
1076
+ >::type*)
1077
+ {
1078
+ return boost::asio::prefer(*static_cast<const Ex*>(ex),
1079
+ *static_cast<const Prop*>(prop));
1080
+ }
1081
+
1082
+ template <typename Poly, typename Ex, class Prop>
1083
+ static Poly prefer_fn_impl(const void*, const void*, ...)
1084
+ {
1085
+ return Poly();
1086
+ }
1087
+
1088
+ template <typename Poly, typename Ex, class Prop>
1089
+ static Poly prefer_fn(const void* ex, const void* prop)
1090
+ {
1091
+ return prefer_fn_impl<Poly, Ex, Prop>(ex, prop, 0);
1092
+ }
1093
+
1094
+ template <typename Poly>
1095
+ struct prop_fns
1096
+ {
1097
+ void (*query)(void*, const void*, const void*);
1098
+ Poly (*require)(const void*, const void*);
1099
+ Poly (*prefer)(const void*, const void*);
1100
+ };
1101
+
1102
+ #if defined(BOOST_ASIO_MSVC)
1103
+ # pragma warning (pop)
1104
+ #endif // defined(BOOST_ASIO_MSVC)
1105
+
1106
+ private:
1107
+ template <typename Executor>
1108
+ static execution::blocking_t query_blocking(const Executor& ex, true_type)
1109
+ {
1110
+ return boost::asio::query(ex, execution::blocking);
1111
+ }
1112
+
1113
+ template <typename Executor>
1114
+ static execution::blocking_t query_blocking(const Executor&, false_type)
1115
+ {
1116
+ return execution::blocking_t();
1117
+ }
1118
+
1119
+ template <typename Executor>
1120
+ void construct_object(Executor& ex, true_type)
1121
+ {
1122
+ object_fns_ = object_fns_table<Executor>();
1123
+ target_ = new (&object_) Executor(BOOST_ASIO_MOVE_CAST(Executor)(ex));
1124
+ }
1125
+
1126
+ template <typename Executor>
1127
+ void construct_object(Executor& ex, false_type)
1128
+ {
1129
+ object_fns_ = object_fns_table<boost::asio::detail::shared_ptr<void> >();
1130
+ boost::asio::detail::shared_ptr<Executor> p =
1131
+ boost::asio::detail::make_shared<Executor>(
1132
+ BOOST_ASIO_MOVE_CAST(Executor)(ex));
1133
+ target_ = p.get();
1134
+ new (&object_) boost::asio::detail::shared_ptr<void>(
1135
+ BOOST_ASIO_MOVE_CAST(boost::asio::detail::shared_ptr<Executor>)(p));
1136
+ }
1137
+
1138
+ /*private:*/public:
1139
+ // template <typename...> friend class any_executor;
1140
+
1141
+ typedef aligned_storage<
1142
+ sizeof(boost::asio::detail::shared_ptr<void>),
1143
+ alignment_of<boost::asio::detail::shared_ptr<void> >::value
1144
+ >::type object_type;
1145
+
1146
+ object_type object_;
1147
+ const object_fns* object_fns_;
1148
+ void* target_;
1149
+ const target_fns* target_fns_;
1150
+ };
1151
+
1152
+ template <typename Derived, typename Property, typename = void>
1153
+ struct any_executor_context
1154
+ {
1155
+ };
1156
+
1157
+ #if !defined(BOOST_ASIO_NO_TS_EXECUTORS)
1158
+
1159
+ template <typename Derived, typename Property>
1160
+ struct any_executor_context<Derived, Property,
1161
+ typename enable_if<Property::value>::type>
1162
+ {
1163
+ typename Property::query_result_type context() const
1164
+ {
1165
+ return static_cast<const Derived*>(this)->query(typename Property::type());
1166
+ }
1167
+ };
1168
+
1169
+ #endif // !defined(BOOST_ASIO_NO_TS_EXECUTORS)
1170
+
1171
+ } // namespace detail
1172
+
1173
+ template <>
1174
+ class any_executor<> : public detail::any_executor_base
1175
+ {
1176
+ public:
1177
+ any_executor() BOOST_ASIO_NOEXCEPT
1178
+ : detail::any_executor_base()
1179
+ {
1180
+ }
1181
+
1182
+ any_executor(nullptr_t) BOOST_ASIO_NOEXCEPT
1183
+ : detail::any_executor_base()
1184
+ {
1185
+ }
1186
+
1187
+ template <typename Executor>
1188
+ any_executor(Executor ex,
1189
+ typename enable_if<
1190
+ conditional<
1191
+ !is_same<Executor, any_executor>::value
1192
+ && !is_base_of<detail::any_executor_base, Executor>::value,
1193
+ is_executor<Executor>,
1194
+ false_type
1195
+ >::type::value
1196
+ >::type* = 0)
1197
+ : detail::any_executor_base(
1198
+ BOOST_ASIO_MOVE_CAST(Executor)(ex), false_type())
1199
+ {
1200
+ }
1201
+
1202
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
1203
+
1204
+ template <typename... OtherSupportableProperties>
1205
+ any_executor(any_executor<OtherSupportableProperties...> other)
1206
+ : detail::any_executor_base(
1207
+ static_cast<const detail::any_executor_base&>(other))
1208
+ {
1209
+ }
1210
+
1211
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
1212
+
1213
+ template <typename U0, typename U1, typename U2, typename U3,
1214
+ typename U4, typename U5, typename U6, typename U7>
1215
+ any_executor(any_executor<U0, U1, U2, U3, U4, U5, U6, U7> other)
1216
+ : detail::any_executor_base(
1217
+ static_cast<const detail::any_executor_base&>(other))
1218
+ {
1219
+ }
1220
+
1221
+ #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
1222
+
1223
+ any_executor(const any_executor& other) BOOST_ASIO_NOEXCEPT
1224
+ : detail::any_executor_base(
1225
+ static_cast<const detail::any_executor_base&>(other))
1226
+ {
1227
+ }
1228
+
1229
+ any_executor& operator=(const any_executor& other) BOOST_ASIO_NOEXCEPT
1230
+ {
1231
+ if (this != &other)
1232
+ {
1233
+ detail::any_executor_base::operator=(
1234
+ static_cast<const detail::any_executor_base&>(other));
1235
+ }
1236
+ return *this;
1237
+ }
1238
+
1239
+ any_executor& operator=(nullptr_t p) BOOST_ASIO_NOEXCEPT
1240
+ {
1241
+ detail::any_executor_base::operator=(p);
1242
+ return *this;
1243
+ }
1244
+
1245
+ #if defined(BOOST_ASIO_HAS_MOVE)
1246
+
1247
+ any_executor(any_executor&& other) BOOST_ASIO_NOEXCEPT
1248
+ : detail::any_executor_base(
1249
+ static_cast<any_executor_base&&>(
1250
+ static_cast<any_executor_base&>(other)))
1251
+ {
1252
+ }
1253
+
1254
+ any_executor& operator=(any_executor&& other) BOOST_ASIO_NOEXCEPT
1255
+ {
1256
+ if (this != &other)
1257
+ {
1258
+ detail::any_executor_base::operator=(
1259
+ static_cast<detail::any_executor_base&&>(
1260
+ static_cast<detail::any_executor_base&>(other)));
1261
+ }
1262
+ return *this;
1263
+ }
1264
+
1265
+ #endif // defined(BOOST_ASIO_HAS_MOVE)
1266
+
1267
+ void swap(any_executor& other) BOOST_ASIO_NOEXCEPT
1268
+ {
1269
+ detail::any_executor_base::swap(
1270
+ static_cast<detail::any_executor_base&>(other));
1271
+ }
1272
+
1273
+ using detail::any_executor_base::execute;
1274
+ using detail::any_executor_base::target;
1275
+ using detail::any_executor_base::target_type;
1276
+ using detail::any_executor_base::operator unspecified_bool_type;
1277
+ using detail::any_executor_base::operator!;
1278
+
1279
+ bool equality_helper(const any_executor& other) const BOOST_ASIO_NOEXCEPT
1280
+ {
1281
+ return any_executor_base::equality_helper(other);
1282
+ }
1283
+ };
1284
+
1285
+ inline bool operator==(const any_executor<>& a,
1286
+ const any_executor<>& b) BOOST_ASIO_NOEXCEPT
1287
+ {
1288
+ return a.equality_helper(b);
1289
+ }
1290
+
1291
+ inline bool operator==(const any_executor<>& a, nullptr_t) BOOST_ASIO_NOEXCEPT
1292
+ {
1293
+ return !a;
1294
+ }
1295
+
1296
+ inline bool operator==(nullptr_t, const any_executor<>& b) BOOST_ASIO_NOEXCEPT
1297
+ {
1298
+ return !b;
1299
+ }
1300
+
1301
+ inline bool operator!=(const any_executor<>& a,
1302
+ const any_executor<>& b) BOOST_ASIO_NOEXCEPT
1303
+ {
1304
+ return !a.equality_helper(b);
1305
+ }
1306
+
1307
+ inline bool operator!=(const any_executor<>& a, nullptr_t) BOOST_ASIO_NOEXCEPT
1308
+ {
1309
+ return !!a;
1310
+ }
1311
+
1312
+ inline bool operator!=(nullptr_t, const any_executor<>& b) BOOST_ASIO_NOEXCEPT
1313
+ {
1314
+ return !!b;
1315
+ }
1316
+
1317
+ inline void swap(any_executor<>& a, any_executor<>& b) BOOST_ASIO_NOEXCEPT
1318
+ {
1319
+ return a.swap(b);
1320
+ }
1321
+
1322
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
1323
+
1324
+ template <typename... SupportableProperties>
1325
+ class any_executor :
1326
+ public detail::any_executor_base,
1327
+ public detail::any_executor_context<
1328
+ any_executor<SupportableProperties...>,
1329
+ typename detail::supportable_properties<
1330
+ 0, void(SupportableProperties...)>::find_context_as_property>
1331
+ {
1332
+ public:
1333
+ any_executor() BOOST_ASIO_NOEXCEPT
1334
+ : detail::any_executor_base(),
1335
+ prop_fns_(prop_fns_table<void>())
1336
+ {
1337
+ }
1338
+
1339
+ any_executor(nullptr_t) BOOST_ASIO_NOEXCEPT
1340
+ : detail::any_executor_base(),
1341
+ prop_fns_(prop_fns_table<void>())
1342
+ {
1343
+ }
1344
+
1345
+ template <typename Executor>
1346
+ any_executor(Executor ex,
1347
+ typename enable_if<
1348
+ conditional<
1349
+ !is_same<Executor, any_executor>::value
1350
+ && !is_base_of<detail::any_executor_base, Executor>::value,
1351
+ detail::is_valid_target_executor<
1352
+ Executor, void(SupportableProperties...)>,
1353
+ false_type
1354
+ >::type::value
1355
+ >::type* = 0)
1356
+ : detail::any_executor_base(
1357
+ BOOST_ASIO_MOVE_CAST(Executor)(ex), false_type()),
1358
+ prop_fns_(prop_fns_table<Executor>())
1359
+ {
1360
+ }
1361
+
1362
+ template <typename... OtherSupportableProperties>
1363
+ any_executor(any_executor<OtherSupportableProperties...> other,
1364
+ typename enable_if<
1365
+ conditional<
1366
+ !is_same<
1367
+ any_executor<OtherSupportableProperties...>,
1368
+ any_executor
1369
+ >::value,
1370
+ typename detail::supportable_properties<
1371
+ 0, void(SupportableProperties...)>::template is_valid_target<
1372
+ any_executor<OtherSupportableProperties...> >,
1373
+ false_type
1374
+ >::type::value
1375
+ >::type* = 0)
1376
+ : detail::any_executor_base(BOOST_ASIO_MOVE_CAST(
1377
+ any_executor<OtherSupportableProperties...>)(other), true_type()),
1378
+ prop_fns_(prop_fns_table<any_executor<OtherSupportableProperties...> >())
1379
+ {
1380
+ }
1381
+
1382
+ any_executor(const any_executor& other) BOOST_ASIO_NOEXCEPT
1383
+ : detail::any_executor_base(
1384
+ static_cast<const detail::any_executor_base&>(other)),
1385
+ prop_fns_(other.prop_fns_)
1386
+ {
1387
+ }
1388
+
1389
+ any_executor& operator=(const any_executor& other) BOOST_ASIO_NOEXCEPT
1390
+ {
1391
+ if (this != &other)
1392
+ {
1393
+ prop_fns_ = other.prop_fns_;
1394
+ detail::any_executor_base::operator=(
1395
+ static_cast<const detail::any_executor_base&>(other));
1396
+ }
1397
+ return *this;
1398
+ }
1399
+
1400
+ any_executor& operator=(nullptr_t p) BOOST_ASIO_NOEXCEPT
1401
+ {
1402
+ prop_fns_ = prop_fns_table<void>();
1403
+ detail::any_executor_base::operator=(p);
1404
+ return *this;
1405
+ }
1406
+
1407
+ #if defined(BOOST_ASIO_HAS_MOVE)
1408
+
1409
+ any_executor(any_executor&& other) BOOST_ASIO_NOEXCEPT
1410
+ : detail::any_executor_base(
1411
+ static_cast<any_executor_base&&>(
1412
+ static_cast<any_executor_base&>(other))),
1413
+ prop_fns_(other.prop_fns_)
1414
+ {
1415
+ other.prop_fns_ = prop_fns_table<void>();
1416
+ }
1417
+
1418
+ any_executor& operator=(any_executor&& other) BOOST_ASIO_NOEXCEPT
1419
+ {
1420
+ if (this != &other)
1421
+ {
1422
+ prop_fns_ = other.prop_fns_;
1423
+ detail::any_executor_base::operator=(
1424
+ static_cast<detail::any_executor_base&&>(
1425
+ static_cast<detail::any_executor_base&>(other)));
1426
+ }
1427
+ return *this;
1428
+ }
1429
+
1430
+ #endif // defined(BOOST_ASIO_HAS_MOVE)
1431
+
1432
+ void swap(any_executor& other) BOOST_ASIO_NOEXCEPT
1433
+ {
1434
+ if (this != &other)
1435
+ {
1436
+ detail::any_executor_base::swap(
1437
+ static_cast<detail::any_executor_base&>(other));
1438
+ const prop_fns<any_executor>* tmp_prop_fns = other.prop_fns_;
1439
+ other.prop_fns_ = prop_fns_;
1440
+ prop_fns_ = tmp_prop_fns;
1441
+ }
1442
+ }
1443
+
1444
+ using detail::any_executor_base::execute;
1445
+ using detail::any_executor_base::target;
1446
+ using detail::any_executor_base::target_type;
1447
+ using detail::any_executor_base::operator unspecified_bool_type;
1448
+ using detail::any_executor_base::operator!;
1449
+
1450
+ bool equality_helper(const any_executor& other) const BOOST_ASIO_NOEXCEPT
1451
+ {
1452
+ return any_executor_base::equality_helper(other);
1453
+ }
1454
+
1455
+ template <typename T>
1456
+ struct find_convertible_property :
1457
+ detail::supportable_properties<
1458
+ 0, void(SupportableProperties...)>::template
1459
+ find_convertible_property<T> {};
1460
+
1461
+ template <typename Property>
1462
+ void query(const Property& p,
1463
+ typename enable_if<
1464
+ is_same<
1465
+ typename find_convertible_property<Property>::query_result_type,
1466
+ void
1467
+ >::value
1468
+ >::type* = 0) const
1469
+ {
1470
+ typedef find_convertible_property<Property> found;
1471
+ prop_fns_[found::index].query(0, object_fns_->target(*this),
1472
+ &static_cast<const typename found::type&>(p));
1473
+ }
1474
+
1475
+ template <typename Property>
1476
+ typename find_convertible_property<Property>::query_result_type
1477
+ query(const Property& p,
1478
+ typename enable_if<
1479
+ !is_same<
1480
+ typename find_convertible_property<Property>::query_result_type,
1481
+ void
1482
+ >::value
1483
+ &&
1484
+ is_reference<
1485
+ typename find_convertible_property<Property>::query_result_type
1486
+ >::value
1487
+ >::type* = 0) const
1488
+ {
1489
+ typedef find_convertible_property<Property> found;
1490
+ typename remove_reference<
1491
+ typename found::query_result_type>::type* result = 0;
1492
+ prop_fns_[found::index].query(&result, object_fns_->target(*this),
1493
+ &static_cast<const typename found::type&>(p));
1494
+ return *result;
1495
+ }
1496
+
1497
+ template <typename Property>
1498
+ typename find_convertible_property<Property>::query_result_type
1499
+ query(const Property& p,
1500
+ typename enable_if<
1501
+ !is_same<
1502
+ typename find_convertible_property<Property>::query_result_type,
1503
+ void
1504
+ >::value
1505
+ &&
1506
+ is_scalar<
1507
+ typename find_convertible_property<Property>::query_result_type
1508
+ >::value
1509
+ >::type* = 0) const
1510
+ {
1511
+ typedef find_convertible_property<Property> found;
1512
+ typename found::query_result_type result;
1513
+ prop_fns_[found::index].query(&result, object_fns_->target(*this),
1514
+ &static_cast<const typename found::type&>(p));
1515
+ return result;
1516
+ }
1517
+
1518
+ template <typename Property>
1519
+ typename find_convertible_property<Property>::query_result_type
1520
+ query(const Property& p,
1521
+ typename enable_if<
1522
+ !is_same<
1523
+ typename find_convertible_property<Property>::query_result_type,
1524
+ void
1525
+ >::value
1526
+ &&
1527
+ !is_reference<
1528
+ typename find_convertible_property<Property>::query_result_type
1529
+ >::value
1530
+ &&
1531
+ !is_scalar<
1532
+ typename find_convertible_property<Property>::query_result_type
1533
+ >::value
1534
+ >::type* = 0) const
1535
+ {
1536
+ typedef find_convertible_property<Property> found;
1537
+ typename found::query_result_type* result;
1538
+ prop_fns_[found::index].query(&result, object_fns_->target(*this),
1539
+ &static_cast<const typename found::type&>(p));
1540
+ return *boost::asio::detail::scoped_ptr<
1541
+ typename found::query_result_type>(result);
1542
+ }
1543
+
1544
+ template <typename T>
1545
+ struct find_convertible_requirable_property :
1546
+ detail::supportable_properties<
1547
+ 0, void(SupportableProperties...)>::template
1548
+ find_convertible_requirable_property<T> {};
1549
+
1550
+ template <typename Property>
1551
+ any_executor require(const Property& p,
1552
+ typename enable_if<
1553
+ find_convertible_requirable_property<Property>::value
1554
+ >::type* = 0) const
1555
+ {
1556
+ typedef find_convertible_requirable_property<Property> found;
1557
+ return prop_fns_[found::index].require(object_fns_->target(*this),
1558
+ &static_cast<const typename found::type&>(p));
1559
+ }
1560
+
1561
+ template <typename T>
1562
+ struct find_convertible_preferable_property :
1563
+ detail::supportable_properties<
1564
+ 0, void(SupportableProperties...)>::template
1565
+ find_convertible_preferable_property<T> {};
1566
+
1567
+ template <typename Property>
1568
+ any_executor prefer(const Property& p,
1569
+ typename enable_if<
1570
+ find_convertible_preferable_property<Property>::value
1571
+ >::type* = 0) const
1572
+ {
1573
+ typedef find_convertible_preferable_property<Property> found;
1574
+ return prop_fns_[found::index].prefer(object_fns_->target(*this),
1575
+ &static_cast<const typename found::type&>(p));
1576
+ }
1577
+
1578
+ //private:
1579
+ template <typename Ex>
1580
+ static const prop_fns<any_executor>* prop_fns_table()
1581
+ {
1582
+ static const prop_fns<any_executor> fns[] =
1583
+ {
1584
+ {
1585
+ &detail::any_executor_base::query_fn<
1586
+ Ex, SupportableProperties>,
1587
+ &detail::any_executor_base::require_fn<
1588
+ any_executor, Ex, SupportableProperties>,
1589
+ &detail::any_executor_base::prefer_fn<
1590
+ any_executor, Ex, SupportableProperties>
1591
+ }...
1592
+ };
1593
+ return fns;
1594
+ }
1595
+
1596
+ const prop_fns<any_executor>* prop_fns_;
1597
+ };
1598
+
1599
+ template <typename... SupportableProperties>
1600
+ inline bool operator==(const any_executor<SupportableProperties...>& a,
1601
+ const any_executor<SupportableProperties...>& b) BOOST_ASIO_NOEXCEPT
1602
+ {
1603
+ return a.equality_helper(b);
1604
+ }
1605
+
1606
+ template <typename... SupportableProperties>
1607
+ inline bool operator==(const any_executor<SupportableProperties...>& a,
1608
+ nullptr_t) BOOST_ASIO_NOEXCEPT
1609
+ {
1610
+ return !a;
1611
+ }
1612
+
1613
+ template <typename... SupportableProperties>
1614
+ inline bool operator==(nullptr_t,
1615
+ const any_executor<SupportableProperties...>& b) BOOST_ASIO_NOEXCEPT
1616
+ {
1617
+ return !b;
1618
+ }
1619
+
1620
+ template <typename... SupportableProperties>
1621
+ inline bool operator!=(const any_executor<SupportableProperties...>& a,
1622
+ const any_executor<SupportableProperties...>& b) BOOST_ASIO_NOEXCEPT
1623
+ {
1624
+ return !a.equality_helper(b);
1625
+ }
1626
+
1627
+ template <typename... SupportableProperties>
1628
+ inline bool operator!=(const any_executor<SupportableProperties...>& a,
1629
+ nullptr_t) BOOST_ASIO_NOEXCEPT
1630
+ {
1631
+ return !!a;
1632
+ }
1633
+
1634
+ template <typename... SupportableProperties>
1635
+ inline bool operator!=(nullptr_t,
1636
+ const any_executor<SupportableProperties...>& b) BOOST_ASIO_NOEXCEPT
1637
+ {
1638
+ return !!b;
1639
+ }
1640
+
1641
+ template <typename... SupportableProperties>
1642
+ inline void swap(any_executor<SupportableProperties...>& a,
1643
+ any_executor<SupportableProperties...>& b) BOOST_ASIO_NOEXCEPT
1644
+ {
1645
+ return a.swap(b);
1646
+ }
1647
+
1648
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
1649
+
1650
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS(n) \
1651
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_##n
1652
+
1653
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_1 \
1654
+ { \
1655
+ &detail::any_executor_base::query_fn<Ex, T1>, \
1656
+ &detail::any_executor_base::require_fn<any_executor, Ex, T1>, \
1657
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T1> \
1658
+ }
1659
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_2 \
1660
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_1, \
1661
+ { \
1662
+ &detail::any_executor_base::query_fn<Ex, T2>, \
1663
+ &detail::any_executor_base::require_fn<any_executor, Ex, T2>, \
1664
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T2> \
1665
+ }
1666
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_3 \
1667
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_2, \
1668
+ { \
1669
+ &detail::any_executor_base::query_fn<Ex, T3>, \
1670
+ &detail::any_executor_base::require_fn<any_executor, Ex, T3>, \
1671
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T3> \
1672
+ }
1673
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_4 \
1674
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_3, \
1675
+ { \
1676
+ &detail::any_executor_base::query_fn<Ex, T4>, \
1677
+ &detail::any_executor_base::require_fn<any_executor, Ex, T4>, \
1678
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T4> \
1679
+ }
1680
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_5 \
1681
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_4, \
1682
+ { \
1683
+ &detail::any_executor_base::query_fn<Ex, T5>, \
1684
+ &detail::any_executor_base::require_fn<any_executor, Ex, T5>, \
1685
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T5> \
1686
+ }
1687
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_6 \
1688
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_5, \
1689
+ { \
1690
+ &detail::any_executor_base::query_fn<Ex, T6>, \
1691
+ &detail::any_executor_base::require_fn<any_executor, Ex, T6>, \
1692
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T6> \
1693
+ }
1694
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_7 \
1695
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_6, \
1696
+ { \
1697
+ &detail::any_executor_base::query_fn<Ex, T7>, \
1698
+ &detail::any_executor_base::require_fn<any_executor, Ex, T7>, \
1699
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T7> \
1700
+ }
1701
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_8 \
1702
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_7, \
1703
+ { \
1704
+ &detail::any_executor_base::query_fn<Ex, T8>, \
1705
+ &detail::any_executor_base::require_fn<any_executor, Ex, T8>, \
1706
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T8> \
1707
+ }
1708
+
1709
+ #if defined(BOOST_ASIO_HAS_MOVE)
1710
+
1711
+ # define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS \
1712
+ any_executor(any_executor&& other) BOOST_ASIO_NOEXCEPT \
1713
+ : detail::any_executor_base( \
1714
+ static_cast<any_executor_base&&>( \
1715
+ static_cast<any_executor_base&>(other))), \
1716
+ prop_fns_(other.prop_fns_) \
1717
+ { \
1718
+ other.prop_fns_ = prop_fns_table<void>(); \
1719
+ } \
1720
+ \
1721
+ any_executor& operator=(any_executor&& other) BOOST_ASIO_NOEXCEPT \
1722
+ { \
1723
+ if (this != &other) \
1724
+ { \
1725
+ prop_fns_ = other.prop_fns_; \
1726
+ detail::any_executor_base::operator=( \
1727
+ static_cast<detail::any_executor_base&&>( \
1728
+ static_cast<detail::any_executor_base&>(other))); \
1729
+ } \
1730
+ return *this; \
1731
+ } \
1732
+ /**/
1733
+ #else // defined(BOOST_ASIO_HAS_MOVE)
1734
+
1735
+ # define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS
1736
+
1737
+ #endif // defined(BOOST_ASIO_HAS_MOVE)
1738
+
1739
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_DEF(n) \
1740
+ template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
1741
+ class any_executor<BOOST_ASIO_VARIADIC_TARGS(n)> : \
1742
+ public detail::any_executor_base, \
1743
+ public detail::any_executor_context< \
1744
+ any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>, \
1745
+ typename detail::supportable_properties< \
1746
+ 0, void(BOOST_ASIO_VARIADIC_TARGS(n))>::find_context_as_property> \
1747
+ { \
1748
+ public: \
1749
+ any_executor() BOOST_ASIO_NOEXCEPT \
1750
+ : detail::any_executor_base(), \
1751
+ prop_fns_(prop_fns_table<void>()) \
1752
+ { \
1753
+ } \
1754
+ \
1755
+ any_executor(nullptr_t) BOOST_ASIO_NOEXCEPT \
1756
+ : detail::any_executor_base(), \
1757
+ prop_fns_(prop_fns_table<void>()) \
1758
+ { \
1759
+ } \
1760
+ \
1761
+ template <BOOST_ASIO_EXECUTION_EXECUTOR Executor> \
1762
+ any_executor(Executor ex, \
1763
+ typename enable_if< \
1764
+ conditional< \
1765
+ !is_same<Executor, any_executor>::value \
1766
+ && !is_base_of<detail::any_executor_base, Executor>::value, \
1767
+ detail::is_valid_target_executor< \
1768
+ Executor, void(BOOST_ASIO_VARIADIC_TARGS(n))>, \
1769
+ false_type \
1770
+ >::type::value \
1771
+ >::type* = 0) \
1772
+ : detail::any_executor_base(BOOST_ASIO_MOVE_CAST( \
1773
+ Executor)(ex), false_type()), \
1774
+ prop_fns_(prop_fns_table<Executor>()) \
1775
+ { \
1776
+ } \
1777
+ \
1778
+ any_executor(const any_executor& other) BOOST_ASIO_NOEXCEPT \
1779
+ : detail::any_executor_base( \
1780
+ static_cast<const detail::any_executor_base&>(other)), \
1781
+ prop_fns_(other.prop_fns_) \
1782
+ { \
1783
+ } \
1784
+ \
1785
+ any_executor(any_executor<> other) \
1786
+ : detail::any_executor_base(BOOST_ASIO_MOVE_CAST( \
1787
+ any_executor<>)(other), true_type()), \
1788
+ prop_fns_(prop_fns_table<any_executor<> >()) \
1789
+ { \
1790
+ } \
1791
+ \
1792
+ template <typename OtherAnyExecutor> \
1793
+ any_executor(OtherAnyExecutor other, \
1794
+ typename enable_if< \
1795
+ conditional< \
1796
+ !is_same<OtherAnyExecutor, any_executor>::value \
1797
+ && is_base_of<detail::any_executor_base, \
1798
+ OtherAnyExecutor>::value, \
1799
+ typename detail::supportable_properties< \
1800
+ 0, void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
1801
+ is_valid_target<OtherAnyExecutor>, \
1802
+ false_type \
1803
+ >::type::value \
1804
+ >::type* = 0) \
1805
+ : detail::any_executor_base(BOOST_ASIO_MOVE_CAST( \
1806
+ OtherAnyExecutor)(other), true_type()), \
1807
+ prop_fns_(prop_fns_table<OtherAnyExecutor>()) \
1808
+ { \
1809
+ } \
1810
+ \
1811
+ any_executor& operator=(const any_executor& other) BOOST_ASIO_NOEXCEPT \
1812
+ { \
1813
+ if (this != &other) \
1814
+ { \
1815
+ prop_fns_ = other.prop_fns_; \
1816
+ detail::any_executor_base::operator=( \
1817
+ static_cast<const detail::any_executor_base&>(other)); \
1818
+ } \
1819
+ return *this; \
1820
+ } \
1821
+ \
1822
+ any_executor& operator=(nullptr_t p) BOOST_ASIO_NOEXCEPT \
1823
+ { \
1824
+ prop_fns_ = prop_fns_table<void>(); \
1825
+ detail::any_executor_base::operator=(p); \
1826
+ return *this; \
1827
+ } \
1828
+ \
1829
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS \
1830
+ \
1831
+ void swap(any_executor& other) BOOST_ASIO_NOEXCEPT \
1832
+ { \
1833
+ if (this != &other) \
1834
+ { \
1835
+ detail::any_executor_base::swap( \
1836
+ static_cast<detail::any_executor_base&>(other)); \
1837
+ const prop_fns<any_executor>* tmp_prop_fns = other.prop_fns_; \
1838
+ other.prop_fns_ = prop_fns_; \
1839
+ prop_fns_ = tmp_prop_fns; \
1840
+ } \
1841
+ } \
1842
+ \
1843
+ using detail::any_executor_base::execute; \
1844
+ using detail::any_executor_base::target; \
1845
+ using detail::any_executor_base::target_type; \
1846
+ using detail::any_executor_base::operator unspecified_bool_type; \
1847
+ using detail::any_executor_base::operator!; \
1848
+ \
1849
+ bool equality_helper(const any_executor& other) const BOOST_ASIO_NOEXCEPT \
1850
+ { \
1851
+ return any_executor_base::equality_helper(other); \
1852
+ } \
1853
+ \
1854
+ template <typename T> \
1855
+ struct find_convertible_property : \
1856
+ detail::supportable_properties< \
1857
+ 0, void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
1858
+ find_convertible_property<T> {}; \
1859
+ \
1860
+ template <typename Property> \
1861
+ void query(const Property& p, \
1862
+ typename enable_if< \
1863
+ is_same< \
1864
+ typename find_convertible_property<Property>::query_result_type, \
1865
+ void \
1866
+ >::value \
1867
+ >::type* = 0) const \
1868
+ { \
1869
+ typedef find_convertible_property<Property> found; \
1870
+ prop_fns_[found::index].query(0, object_fns_->target(*this), \
1871
+ &static_cast<const typename found::type&>(p)); \
1872
+ } \
1873
+ \
1874
+ template <typename Property> \
1875
+ typename find_convertible_property<Property>::query_result_type \
1876
+ query(const Property& p, \
1877
+ typename enable_if< \
1878
+ !is_same< \
1879
+ typename find_convertible_property<Property>::query_result_type, \
1880
+ void \
1881
+ >::value \
1882
+ && \
1883
+ is_reference< \
1884
+ typename find_convertible_property<Property>::query_result_type \
1885
+ >::value \
1886
+ >::type* = 0) const \
1887
+ { \
1888
+ typedef find_convertible_property<Property> found; \
1889
+ typename remove_reference< \
1890
+ typename found::query_result_type>::type* result; \
1891
+ prop_fns_[found::index].query(&result, object_fns_->target(*this), \
1892
+ &static_cast<const typename found::type&>(p)); \
1893
+ return *result; \
1894
+ } \
1895
+ \
1896
+ template <typename Property> \
1897
+ typename find_convertible_property<Property>::query_result_type \
1898
+ query(const Property& p, \
1899
+ typename enable_if< \
1900
+ !is_same< \
1901
+ typename find_convertible_property<Property>::query_result_type, \
1902
+ void \
1903
+ >::value \
1904
+ && \
1905
+ is_scalar< \
1906
+ typename find_convertible_property<Property>::query_result_type \
1907
+ >::value \
1908
+ >::type* = 0) const \
1909
+ { \
1910
+ typedef find_convertible_property<Property> found; \
1911
+ typename found::query_result_type result; \
1912
+ prop_fns_[found::index].query(&result, object_fns_->target(*this), \
1913
+ &static_cast<const typename found::type&>(p)); \
1914
+ return result; \
1915
+ } \
1916
+ \
1917
+ template <typename Property> \
1918
+ typename find_convertible_property<Property>::query_result_type \
1919
+ query(const Property& p, \
1920
+ typename enable_if< \
1921
+ !is_same< \
1922
+ typename find_convertible_property<Property>::query_result_type, \
1923
+ void \
1924
+ >::value \
1925
+ && \
1926
+ !is_reference< \
1927
+ typename find_convertible_property<Property>::query_result_type \
1928
+ >::value \
1929
+ && \
1930
+ !is_scalar< \
1931
+ typename find_convertible_property<Property>::query_result_type \
1932
+ >::value \
1933
+ >::type* = 0) const \
1934
+ { \
1935
+ typedef find_convertible_property<Property> found; \
1936
+ typename found::query_result_type* result; \
1937
+ prop_fns_[found::index].query(&result, object_fns_->target(*this), \
1938
+ &static_cast<const typename found::type&>(p)); \
1939
+ return *boost::asio::detail::scoped_ptr< \
1940
+ typename found::query_result_type>(result); \
1941
+ } \
1942
+ \
1943
+ template <typename T> \
1944
+ struct find_convertible_requirable_property : \
1945
+ detail::supportable_properties< \
1946
+ 0, void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
1947
+ find_convertible_requirable_property<T> {}; \
1948
+ \
1949
+ template <typename Property> \
1950
+ any_executor require(const Property& p, \
1951
+ typename enable_if< \
1952
+ find_convertible_requirable_property<Property>::value \
1953
+ >::type* = 0) const \
1954
+ { \
1955
+ typedef find_convertible_requirable_property<Property> found; \
1956
+ return prop_fns_[found::index].require(object_fns_->target(*this), \
1957
+ &static_cast<const typename found::type&>(p)); \
1958
+ } \
1959
+ \
1960
+ template <typename T> \
1961
+ struct find_convertible_preferable_property : \
1962
+ detail::supportable_properties< \
1963
+ 0, void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
1964
+ find_convertible_preferable_property<T> {}; \
1965
+ \
1966
+ template <typename Property> \
1967
+ any_executor prefer(const Property& p, \
1968
+ typename enable_if< \
1969
+ find_convertible_preferable_property<Property>::value \
1970
+ >::type* = 0) const \
1971
+ { \
1972
+ typedef find_convertible_preferable_property<Property> found; \
1973
+ return prop_fns_[found::index].prefer(object_fns_->target(*this), \
1974
+ &static_cast<const typename found::type&>(p)); \
1975
+ } \
1976
+ \
1977
+ template <typename Ex> \
1978
+ static const prop_fns<any_executor>* prop_fns_table() \
1979
+ { \
1980
+ static const prop_fns<any_executor> fns[] = \
1981
+ { \
1982
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS(n) \
1983
+ }; \
1984
+ return fns; \
1985
+ } \
1986
+ \
1987
+ const prop_fns<any_executor>* prop_fns_; \
1988
+ typedef detail::supportable_properties<0, \
1989
+ void(BOOST_ASIO_VARIADIC_TARGS(n))> supportable_properties_type; \
1990
+ }; \
1991
+ \
1992
+ template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
1993
+ inline bool operator==(const any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>& a, \
1994
+ const any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>& b) BOOST_ASIO_NOEXCEPT \
1995
+ { \
1996
+ return a.equality_helper(b); \
1997
+ } \
1998
+ \
1999
+ template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2000
+ inline bool operator==(const any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>& a, \
2001
+ nullptr_t) BOOST_ASIO_NOEXCEPT \
2002
+ { \
2003
+ return !a; \
2004
+ } \
2005
+ \
2006
+ template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2007
+ inline bool operator==(nullptr_t, \
2008
+ const any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>& b) BOOST_ASIO_NOEXCEPT \
2009
+ { \
2010
+ return !b; \
2011
+ } \
2012
+ \
2013
+ template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2014
+ inline bool operator!=(const any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>& a, \
2015
+ const any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>& b) BOOST_ASIO_NOEXCEPT \
2016
+ { \
2017
+ return !a.equality_helper(b); \
2018
+ } \
2019
+ \
2020
+ template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2021
+ inline bool operator!=(const any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>& a, \
2022
+ nullptr_t) BOOST_ASIO_NOEXCEPT \
2023
+ { \
2024
+ return !!a; \
2025
+ } \
2026
+ \
2027
+ template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2028
+ inline bool operator!=(nullptr_t, \
2029
+ const any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>& b) BOOST_ASIO_NOEXCEPT \
2030
+ { \
2031
+ return !!b; \
2032
+ } \
2033
+ \
2034
+ template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2035
+ inline void swap(any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>& a, \
2036
+ any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>& b) BOOST_ASIO_NOEXCEPT \
2037
+ { \
2038
+ return a.swap(b); \
2039
+ } \
2040
+ /**/
2041
+ BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_ANY_EXECUTOR_DEF)
2042
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_DEF
2043
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS
2044
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS
2045
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_1
2046
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_2
2047
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_3
2048
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_4
2049
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_5
2050
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_6
2051
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_7
2052
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_8
2053
+
2054
+ #endif // if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2055
+
2056
+ } // namespace execution
2057
+ namespace traits {
2058
+
2059
+ #if !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
2060
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2061
+
2062
+ template <typename... SupportableProperties>
2063
+ struct equality_comparable<execution::any_executor<SupportableProperties...> >
2064
+ {
2065
+ static const bool is_valid = true;
2066
+ static const bool is_noexcept = true;
2067
+ };
2068
+
2069
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2070
+
2071
+ template <>
2072
+ struct equality_comparable<execution::any_executor<> >
2073
+ {
2074
+ static const bool is_valid = true;
2075
+ static const bool is_noexcept = true;
2076
+ };
2077
+
2078
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_EQUALITY_COMPARABLE_DEF(n) \
2079
+ template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2080
+ struct equality_comparable< \
2081
+ execution::any_executor<BOOST_ASIO_VARIADIC_TARGS(n)> > \
2082
+ { \
2083
+ static const bool is_valid = true; \
2084
+ static const bool is_noexcept = true; \
2085
+ }; \
2086
+ /**/
2087
+ BOOST_ASIO_VARIADIC_GENERATE(
2088
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_EQUALITY_COMPARABLE_DEF)
2089
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_EQUALITY_COMPARABLE_DEF
2090
+
2091
+ #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2092
+ #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
2093
+
2094
+ #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
2095
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2096
+
2097
+ template <typename F, typename... SupportableProperties>
2098
+ struct execute_member<execution::any_executor<SupportableProperties...>, F>
2099
+ {
2100
+ static const bool is_valid = true;
2101
+ static const bool is_noexcept = false;
2102
+ typedef void result_type;
2103
+ };
2104
+
2105
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2106
+
2107
+ template <typename F>
2108
+ struct execute_member<execution::any_executor<>, F>
2109
+ {
2110
+ static const bool is_valid = true;
2111
+ static const bool is_noexcept = false;
2112
+ typedef void result_type;
2113
+ };
2114
+
2115
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_EXECUTE_MEMBER_DEF(n) \
2116
+ template <typename F, BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2117
+ struct execute_member< \
2118
+ execution::any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>, F> \
2119
+ { \
2120
+ static const bool is_valid = true; \
2121
+ static const bool is_noexcept = false; \
2122
+ typedef void result_type; \
2123
+ }; \
2124
+ /**/
2125
+ BOOST_ASIO_VARIADIC_GENERATE(
2126
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_EXECUTE_MEMBER_DEF)
2127
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_EXECUTE_MEMBER_DEF
2128
+
2129
+ #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2130
+ #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
2131
+
2132
+ #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
2133
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2134
+
2135
+ template <typename Prop, typename... SupportableProperties>
2136
+ struct query_member<
2137
+ execution::any_executor<SupportableProperties...>, Prop,
2138
+ typename enable_if<
2139
+ execution::detail::supportable_properties<
2140
+ 0, void(SupportableProperties...)>::template
2141
+ find_convertible_property<Prop>::value
2142
+ >::type>
2143
+ {
2144
+ static const bool is_valid = true;
2145
+ static const bool is_noexcept = false;
2146
+ typedef typename execution::detail::supportable_properties<
2147
+ 0, void(SupportableProperties...)>::template
2148
+ find_convertible_property<Prop>::query_result_type result_type;
2149
+ };
2150
+
2151
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2152
+
2153
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_QUERY_MEMBER_DEF(n) \
2154
+ template <typename Prop, BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2155
+ struct query_member< \
2156
+ execution::any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>, Prop, \
2157
+ typename enable_if< \
2158
+ execution::detail::supportable_properties< \
2159
+ 0, void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
2160
+ find_convertible_property<Prop>::value \
2161
+ >::type> \
2162
+ { \
2163
+ static const bool is_valid = true; \
2164
+ static const bool is_noexcept = false; \
2165
+ typedef typename execution::detail::supportable_properties< \
2166
+ 0, void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
2167
+ find_convertible_property<Prop>::query_result_type result_type; \
2168
+ }; \
2169
+ /**/
2170
+ BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_ANY_EXECUTOR_QUERY_MEMBER_DEF)
2171
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_QUERY_MEMBER_DEF
2172
+
2173
+ #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2174
+ #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
2175
+
2176
+ #if !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
2177
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2178
+
2179
+ template <typename Prop, typename... SupportableProperties>
2180
+ struct require_member<
2181
+ execution::any_executor<SupportableProperties...>, Prop,
2182
+ typename enable_if<
2183
+ execution::detail::supportable_properties<
2184
+ 0, void(SupportableProperties...)>::template
2185
+ find_convertible_requirable_property<Prop>::value
2186
+ >::type>
2187
+ {
2188
+ static const bool is_valid = true;
2189
+ static const bool is_noexcept = false;
2190
+ typedef execution::any_executor<SupportableProperties...> result_type;
2191
+ };
2192
+
2193
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2194
+
2195
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_REQUIRE_MEMBER_DEF(n) \
2196
+ template <typename Prop, BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2197
+ struct require_member< \
2198
+ execution::any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>, Prop, \
2199
+ typename enable_if< \
2200
+ execution::detail::supportable_properties< \
2201
+ 0, void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
2202
+ find_convertible_requirable_property<Prop>::value \
2203
+ >::type> \
2204
+ { \
2205
+ static const bool is_valid = true; \
2206
+ static const bool is_noexcept = false; \
2207
+ typedef execution::any_executor<BOOST_ASIO_VARIADIC_TARGS(n)> result_type; \
2208
+ }; \
2209
+ /**/
2210
+ BOOST_ASIO_VARIADIC_GENERATE(
2211
+ BOOST_ASIO_PRIVATE_ANY_EXECUTOR_REQUIRE_MEMBER_DEF)
2212
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_REQUIRE_MEMBER_DEF
2213
+
2214
+ #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2215
+ #endif // !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
2216
+
2217
+ #if !defined(BOOST_ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
2218
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2219
+
2220
+ template <typename Prop, typename... SupportableProperties>
2221
+ struct prefer_member<
2222
+ execution::any_executor<SupportableProperties...>, Prop,
2223
+ typename enable_if<
2224
+ execution::detail::supportable_properties<
2225
+ 0, void(SupportableProperties...)>::template
2226
+ find_convertible_preferable_property<Prop>::value
2227
+ >::type>
2228
+ {
2229
+ static const bool is_valid = true;
2230
+ static const bool is_noexcept = false;
2231
+ typedef execution::any_executor<SupportableProperties...> result_type;
2232
+ };
2233
+
2234
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2235
+
2236
+ #define BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PREFER_FREE_DEF(n) \
2237
+ template <typename Prop, BOOST_ASIO_VARIADIC_TPARAMS(n)> \
2238
+ struct prefer_member< \
2239
+ execution::any_executor<BOOST_ASIO_VARIADIC_TARGS(n)>, Prop, \
2240
+ typename enable_if< \
2241
+ execution::detail::supportable_properties< \
2242
+ 0, void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
2243
+ find_convertible_preferable_property<Prop>::value \
2244
+ >::type> \
2245
+ { \
2246
+ static const bool is_valid = true; \
2247
+ static const bool is_noexcept = false; \
2248
+ typedef execution::any_executor<BOOST_ASIO_VARIADIC_TARGS(n)> result_type; \
2249
+ }; \
2250
+ /**/
2251
+ BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PREFER_FREE_DEF)
2252
+ #undef BOOST_ASIO_PRIVATE_ANY_EXECUTOR_PREFER_FREE_DEF
2253
+
2254
+ #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
2255
+ #endif // !defined(BOOST_ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
2256
+
2257
+ } // namespace traits
2258
+
2259
+ #endif // defined(GENERATING_DOCUMENTATION)
2260
+
2261
+ } // namespace asio
2262
+ } // namespace boost
2263
+
2264
+ #include <boost/asio/detail/pop_options.hpp>
2265
+
2266
+ #endif // BOOST_ASIO_EXECUTION_ANY_EXECUTOR_HPP