passenger 6.0.19 → 6.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1293) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +65 -3
  3. data/CONTRIBUTORS +2 -0
  4. data/README.md +2 -2
  5. data/bin/passenger-install-nginx-module +4 -4
  6. data/build/integration_tests.rb +2 -1
  7. data/build/support/cxx_dependency_map.rb +155 -54
  8. data/dev/copy_boost_headers +21 -7
  9. data/dev/nginx_version_sha256 +72 -0
  10. data/package.json +15 -15
  11. data/src/agent/AgentMain.cpp +2 -8
  12. data/src/agent/Core/AdminPanelConnector.h +2 -3
  13. data/src/agent/Core/ApiServer.h +1 -1
  14. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +8 -1
  15. data/src/agent/Core/Config.h +6 -3
  16. data/src/agent/Core/Controller/AppResponse.h +0 -1
  17. data/src/agent/Core/Controller/Config.h +2 -2
  18. data/src/agent/Core/Controller/SendRequest.cpp +2 -2
  19. data/src/agent/Core/CoreMain.cpp +1 -0
  20. data/src/agent/Core/ResponseCache.h +3 -2
  21. data/src/agent/Core/SecurityUpdateChecker.h +1 -1
  22. data/src/agent/Core/SpawningKit/Handshake/Perform.h +4 -4
  23. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +2 -2
  24. data/src/agent/ExecHelper/ExecHelperMain.cpp +10 -12
  25. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +7 -10
  26. data/src/agent/MainFunctions.h +38 -0
  27. data/src/agent/Shared/ApiServerUtils.h +3 -2
  28. data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -1
  29. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +2 -3
  30. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +1 -0
  31. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +6 -4
  32. data/src/agent/Watchdog/ApiServer.h +1 -1
  33. data/src/agent/Watchdog/Config.h +1 -1
  34. data/src/agent/Watchdog/WatchdogMain.cpp +5 -12
  35. data/src/apache2_module/Hooks.cpp +26 -1
  36. data/src/cxx_supportlib/ConfigKit/Common.h +1 -1
  37. data/src/cxx_supportlib/Constants.h +1 -1
  38. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -1
  39. data/src/cxx_supportlib/FileTools/PathManip.cpp +10 -1
  40. data/src/cxx_supportlib/IOTools/IOUtils.cpp +2 -6
  41. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +3 -3
  42. data/src/cxx_supportlib/JsonTools/CBindings.cpp +0 -2
  43. data/src/cxx_supportlib/JsonTools/JsonUtils.h +4 -4
  44. data/src/cxx_supportlib/LoggingKit/Context.h +16 -21
  45. data/src/cxx_supportlib/LoggingKit/Forward.h +0 -2
  46. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +36 -72
  47. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +12 -4
  48. data/src/cxx_supportlib/MemoryKit/mbuf.h +1 -1
  49. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +1 -1
  50. data/src/cxx_supportlib/ResourceLocator.h +1 -1
  51. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +3 -94
  52. data/src/cxx_supportlib/SecurityKit/Crypto.h +0 -8
  53. data/src/cxx_supportlib/ServerKit/Context.h +6 -0
  54. data/src/cxx_supportlib/ServerKit/Errors.h +3 -2
  55. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +99 -64
  56. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +4 -1
  57. data/src/cxx_supportlib/ServerKit/HttpRequest.h +2 -2
  58. data/src/cxx_supportlib/ServerKit/HttpServer.h +3 -2
  59. data/src/cxx_supportlib/ServerKit/llerrors.h +84 -0
  60. data/src/cxx_supportlib/ServerKit/llhttp.c +10168 -0
  61. data/src/cxx_supportlib/ServerKit/llhttp.h +903 -0
  62. data/src/cxx_supportlib/ServerKit/llhttp_api.c +510 -0
  63. data/src/cxx_supportlib/ServerKit/llhttp_http.c +170 -0
  64. data/src/cxx_supportlib/ServerKit/llversion.h +12 -0
  65. data/src/cxx_supportlib/ServerKit/url_parser.c +574 -0
  66. data/src/cxx_supportlib/ServerKit/url_parser.h +74 -0
  67. data/src/cxx_supportlib/StaticString.h +3 -1
  68. data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
  69. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +12 -3
  70. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +5 -0
  71. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +2 -2
  72. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +14 -14
  73. data/src/cxx_supportlib/SystemTools/UserDatabase.h +6 -10
  74. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +11 -9
  75. data/src/cxx_supportlib/Utils.cpp +1 -1
  76. data/src/cxx_supportlib/oxt/implementation.cpp +1 -2
  77. data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +26 -32
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +194 -56
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +34 -42
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/append.hpp +10 -23
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +21 -34
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +26 -45
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +26 -43
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +30 -52
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +282 -0
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +178 -863
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +1 -1
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +64 -98
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +17 -22
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +18 -23
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +4 -8
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +30 -42
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +65 -96
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +20 -29
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +36 -48
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +31 -44
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +73 -23
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +34 -45
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +108 -151
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +6 -82
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +6 -51
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +30 -40
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +50 -76
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +13 -15
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +3 -3
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +23 -32
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +20 -29
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +97 -299
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +97 -288
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +90 -288
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +551 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +365 -290
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +29 -39
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +27 -39
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +33 -49
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +27 -39
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +4 -4
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +25 -85
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +16 -16
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +8 -25
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +17 -17
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +60 -272
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +52 -79
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/connect_pipe.hpp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +11 -24
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +2 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +37 -34
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +302 -262
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +12 -20
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +2 -10
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +2 -4
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +5 -13
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +21 -20
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +2 -2
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +129 -563
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +3 -3
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +3 -7
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +2 -23
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +4 -4
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +21 -97
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +1 -1
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +155 -963
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +3 -11
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -5
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +2 -24
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +4 -4
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +41 -3
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +40 -3
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +20 -3
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +20 -3
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +3 -5
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/exception.hpp +2 -13
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +8 -60
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +6 -6
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +3 -43
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -12
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +9 -10
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +3 -5
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +41 -104
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +3 -3
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +9 -15
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +101 -123
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -15
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +2 -2
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +13 -4
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +2 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +17 -8
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +5 -5
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_descriptor_service.ipp +2 -2
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_file_service.ipp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.ipp +69 -35
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_socket_service_base.ipp +2 -2
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +2 -2
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +15 -6
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +1 -1
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_serial_port_service.ipp +1 -1
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +9 -9
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +26 -18
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +3 -3
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +2 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +2 -2
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +12 -4
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +2 -3
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +57 -4
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +63 -5
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +47 -68
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +2 -3
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +12 -12
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_defer.hpp +209 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_dispatch.hpp +195 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_post.hpp +209 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +6 -10
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +6 -3
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_op.hpp +6 -3
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_service.hpp +17 -9
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +6 -3
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_op.hpp +6 -3
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_file_service.hpp +2 -3
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_null_buffers_op.hpp +5 -4
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_operation.hpp +1 -1
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_service.hpp +4 -3
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_accept_op.hpp +11 -12
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_connect_op.hpp +5 -4
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recv_op.hpp +6 -3
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +7 -4
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +6 -3
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_send_op.hpp +6 -3
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_sendto_op.hpp +6 -3
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service.hpp +11 -13
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service_base.hpp +9 -9
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_wait_op.hpp +5 -4
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +7 -49
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +20 -3
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +1 -6
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +13 -43
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +3 -5
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +4 -15
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +1 -1
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +1 -1
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +3 -3
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +1 -1
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +1 -1
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_serial_port_service.hpp +1 -1
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +1 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +61 -25
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +37 -4
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +89 -12
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +41 -4
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +40 -4
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +41 -4
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +41 -4
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +41 -4
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +40 -4
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +20 -20
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +135 -38
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +37 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +1 -1
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +2 -2
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +4 -13
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +4 -4
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +4 -4
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +3 -3
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_task.hpp +1 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +20 -3
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +2 -3
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +3 -3
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +12 -3
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +11 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +1 -1
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +3 -5
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -6
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -6
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -6
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -6
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -6
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -6
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +13 -13
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +1 -1
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +3 -5
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +1 -1
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +12 -22
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +2 -2
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +1 -1
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +104 -90
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +4 -4
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +3 -3
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +2 -2
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +20 -34
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +7 -117
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +36 -34
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +34 -112
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +268 -991
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +3 -4
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +296 -536
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +232 -409
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +20 -73
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +30 -72
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +24 -170
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +3 -3
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +2 -30
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +240 -398
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +20 -73
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +149 -296
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +56 -59
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +149 -296
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +1 -16
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +1 -25
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +59 -43
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +56 -61
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +1 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +20 -24
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +1 -1
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +7 -7
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +56 -34
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +56 -34
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +25 -28
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel.hpp +3 -3
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_error.hpp +1 -1
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +15 -15
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +5 -4
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +1 -1
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/concurrent_channel.hpp +3 -3
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +1 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro_traits.hpp +1 -1
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +1 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +10 -13
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_message.hpp +27 -20
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +193 -38
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_payload.hpp +143 -14
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +24 -9
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +77 -17
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +20 -12
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +50 -50
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +3 -3
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +1 -1
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/has_signature.hpp +1 -1
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +46 -34
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +1 -1
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +33 -96
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/channel_error.ipp +2 -2
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +62 -20
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +48 -45
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +56 -60
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +18 -4
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +5 -5
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +3 -3
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +27 -31
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +1 -1
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +1 -1
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +15 -21
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +13 -13
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/file_base.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -6
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -6
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +10 -14
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +10 -17
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +37 -100
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +99 -107
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +66 -25
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +55 -178
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +55 -178
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancellation_signal.ipp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +123 -73
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +84 -234
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.hpp +1 -1
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.ipp +1 -1
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +32 -97
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +73 -31
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +5 -58
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +4 -4
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +3 -35
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +60 -43
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +3 -3
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +39 -56
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +2 -1
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +4 -8
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +36 -98
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +206 -429
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +60 -206
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +456 -970
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +43 -411
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +207 -423
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -3
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +2 -2
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +2 -2
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +19 -25
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +32 -109
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +5 -4
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +2 -2
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +79 -425
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +213 -427
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +58 -194
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +91 -120
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +33 -25
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +26 -35
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +28 -36
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +13 -19
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +16 -22
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +33 -42
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +13 -18
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +15 -20
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +13 -3
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +26 -35
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +46 -76
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +4 -8
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +17 -1
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +9 -13
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +17 -17
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -14
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +18 -22
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +9 -13
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +24 -32
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -3
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -3
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +1 -1
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +16 -20
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +14 -18
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +7 -7
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +1 -1
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +1 -1
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +6 -6
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/is_contiguous_iterator.hpp +2 -2
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +2 -6
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +1 -1
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +1 -1
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/local/seq_packet_protocol.hpp +86 -0
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +3 -9
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -61
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +29 -105
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +21 -29
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +24 -34
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +1 -1
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +1 -1
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +1 -1
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +36 -34
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +176 -333
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/prepend.hpp +11 -23
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +57 -70
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/random_access_file.hpp +1 -1
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +136 -168
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +35 -52
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +256 -298
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/readable_pipe.hpp +1 -1
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/recycling_allocator.hpp +15 -15
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +7 -9
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +35 -47
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +108 -246
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +70 -79
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +1 -1
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +1 -1
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_base.hpp +173 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +1 -1
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +127 -161
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +1 -3
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +24 -24
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +3 -3
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +3 -7
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +3 -3
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +3 -7
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +16 -75
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -3
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +4 -4
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +15 -19
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -2
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -3
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +1 -1
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +2 -4
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +3 -3
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +1 -1
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +1 -1
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +1 -1
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +51 -82
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -1
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +1 -1
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -6
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +91 -118
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_file.hpp +1 -1
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +3 -3
  590. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +62 -62
  591. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -6
  592. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +35 -48
  593. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +91 -273
  594. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  595. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +14 -18
  596. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +16 -20
  597. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +16 -20
  598. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +16 -20
  599. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +16 -20
  600. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +16 -20
  601. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +15 -22
  602. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +16 -20
  603. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +16 -20
  604. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +16 -20
  605. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +16 -20
  606. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +20 -26
  607. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +22 -30
  608. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +22 -30
  609. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  610. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +1 -1
  611. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  612. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  613. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  614. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +6 -24
  615. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  616. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  617. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  618. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +15 -21
  619. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +8 -12
  620. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +2 -6
  621. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  622. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  623. data/src/cxx_supportlib/vendor-modified/boost/asio/writable_pipe.hpp +1 -1
  624. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +122 -146
  625. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +34 -50
  626. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  627. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -28
  628. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -3
  629. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +2 -16
  630. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +2 -3
  631. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +5 -3
  632. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +6 -4
  633. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +0 -49
  634. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +107 -40
  635. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +32 -5
  636. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +12 -13
  637. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +7 -8
  638. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +26 -27
  639. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +122 -35
  640. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +2 -3
  641. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +7 -0
  642. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +42 -0
  643. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +1 -2
  644. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +3 -4
  645. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +2 -3
  646. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +2 -3
  647. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +2 -60
  648. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +230 -1740
  649. data/src/cxx_supportlib/vendor-modified/boost/bind/{bind_cc.hpp → detail/bind_cc.hpp} +20 -20
  650. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf2_cc.hpp +210 -0
  651. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf_cc.hpp +405 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/integer_sequence.hpp +111 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +1 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/tuple_for_each.hpp +64 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +140 -290
  656. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +3 -16
  657. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +0 -279
  658. data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +0 -6
  659. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/is_evenly_divisible_by.hpp +1 -7
  661. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/requires_cxx11.hpp +23 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -1
  663. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +1 -1
  664. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +1 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +3 -3
  666. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +1 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  668. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +4 -1
  669. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  670. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +4 -1
  671. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
  672. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +41 -0
  673. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +8 -0
  675. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +8 -2
  676. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +5 -0
  677. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -1
  678. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +1 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +4 -0
  681. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +4 -2
  682. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +5 -0
  683. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +1 -0
  684. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -0
  685. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -0
  686. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -0
  687. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +4 -0
  688. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +4 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +13 -3
  691. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +8 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +16 -1
  694. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +56 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +32 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +16 -1
  697. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +6 -7
  698. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +18 -19
  699. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +27 -29
  700. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +0 -29
  701. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +144 -145
  702. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +4 -5
  703. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +48 -49
  704. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  705. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +14 -15
  706. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +22 -22
  707. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +1 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +71 -69
  709. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +48 -48
  710. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +38 -40
  711. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +165 -153
  712. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +162 -163
  713. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +1 -2
  714. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +48 -12
  715. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +6 -8
  716. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +44 -46
  717. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +10 -11
  718. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +18 -19
  719. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +0 -8
  720. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
  721. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +83 -84
  722. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +3 -3
  723. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +77 -1
  724. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +81 -85
  725. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +231 -233
  726. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +86 -86
  727. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -33
  728. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +107 -110
  729. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +9 -11
  730. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +10 -11
  731. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +29 -17
  732. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +2 -2
  733. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
  734. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  736. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +80 -82
  737. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +81 -81
  738. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +24 -26
  739. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +147 -122
  740. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +109 -110
  741. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +32 -32
  742. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +165 -194
  743. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +4 -5
  744. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +263 -199
  745. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_integral.hpp +146 -0
  746. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +6 -6
  747. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +296 -61
  748. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple_like.hpp +62 -0
  749. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/mulx.hpp +79 -0
  750. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +38 -124
  751. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +1 -0
  752. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +27 -20
  753. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +4 -5
  754. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +8 -40
  755. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_tuple_like.hpp +36 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +6 -7
  757. data/src/cxx_supportlib/vendor-modified/boost/core/alignof.hpp +57 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +22 -8
  759. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +362 -31
  760. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +29 -3
  761. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +46 -0
  762. data/src/cxx_supportlib/vendor-modified/boost/core/detail/is_same.hpp +39 -0
  763. data/src/cxx_supportlib/vendor-modified/boost/core/detail/lwt_unattended.hpp +66 -0
  764. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_pause.hpp +71 -0
  765. data/src/cxx_supportlib/vendor-modified/boost/{smart_ptr → core}/detail/sp_thread_sleep.hpp +39 -21
  766. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_yield.hpp +100 -0
  767. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +7 -7
  768. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +7 -0
  769. data/src/cxx_supportlib/vendor-modified/boost/core/functor.hpp +41 -0
  770. data/src/cxx_supportlib/vendor-modified/boost/core/identity.hpp +61 -0
  771. data/src/cxx_supportlib/vendor-modified/boost/core/invoke_swap.hpp +93 -0
  772. data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +10 -15
  773. data/src/cxx_supportlib/vendor-modified/boost/core/launder.hpp +69 -0
  774. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +33 -36
  775. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +3 -3
  776. data/src/cxx_supportlib/vendor-modified/boost/core/make_span.hpp +59 -0
  777. data/src/cxx_supportlib/vendor-modified/boost/core/max_align.hpp +82 -0
  778. data/src/cxx_supportlib/vendor-modified/boost/core/memory_resource.hpp +108 -0
  779. data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +7 -0
  780. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +23 -16
  781. data/src/cxx_supportlib/vendor-modified/boost/core/serialization.hpp +131 -0
  782. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +31 -0
  783. data/src/cxx_supportlib/vendor-modified/boost/core/snprintf.hpp +173 -0
  784. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +17 -17
  785. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +10 -40
  786. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +29 -5
  787. data/src/cxx_supportlib/vendor-modified/boost/core/yield_primitives.hpp +12 -0
  788. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +2 -0
  789. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -6
  790. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +6 -97
  791. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +1 -1
  792. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +1 -1
  793. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +1 -1
  794. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +22 -10
  795. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +1 -1
  796. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +1 -1
  797. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +24 -0
  798. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +1 -1
  799. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +4 -4
  800. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +1 -1
  801. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +1 -1
  802. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +1 -1
  803. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +2 -2
  804. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +1 -1
  805. data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +1 -3
  806. data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +1 -3
  807. data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +1 -3
  808. data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +1 -3
  809. data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +1 -3
  810. data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +1 -3
  811. data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +1 -3
  812. data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +1 -3
  813. data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +1 -3
  814. data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +1 -3
  815. data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +1 -3
  816. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +49 -198
  817. data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +36 -41
  818. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +277 -420
  819. data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +1 -31
  820. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +5 -61
  821. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +2 -2
  822. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +24 -25
  823. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +12 -13
  824. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +1 -1
  825. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +24 -25
  826. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +65 -66
  827. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +20 -20
  828. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +7 -7
  829. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +10 -10
  830. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +3 -3
  831. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +5 -5
  832. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +10 -10
  833. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +3 -3
  834. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +24 -24
  835. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +1 -1
  836. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +1 -1
  837. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +14 -15
  838. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +277 -0
  839. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +11 -49
  840. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_integral.hpp +119 -0
  841. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_mix.hpp +130 -0
  842. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +41 -41
  843. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +14 -20
  844. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +6 -6
  845. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +12 -12
  846. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +7 -7
  847. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +19 -19
  848. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +6 -0
  849. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +3 -3
  850. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +6 -17
  851. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  852. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +14 -14
  853. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +20 -20
  854. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +22 -22
  855. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +21 -21
  856. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +28 -28
  857. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +58 -1
  858. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +268 -239
  859. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +9 -9
  860. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +57 -58
  861. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +3 -3
  862. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
  863. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +3 -3
  864. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +12 -13
  865. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +24 -25
  866. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +24 -25
  867. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +14 -15
  868. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +1 -1
  869. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +61 -62
  870. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +24 -25
  871. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +12 -13
  872. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +18 -19
  873. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +4 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +36 -37
  875. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -34
  876. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +11 -11
  877. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +2 -2
  878. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +10 -11
  879. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +148 -0
  880. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +2 -2
  881. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +7 -13
  882. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +59 -0
  883. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +113 -131
  884. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +612 -645
  885. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +85 -79
  886. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +25 -32
  887. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +22 -29
  888. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +73 -0
  889. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  890. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +21 -16
  891. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +7 -9
  892. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +22 -161
  893. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +9 -12
  894. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +4 -2
  895. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +3 -1
  896. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +3 -1
  897. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +10 -18
  898. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +13 -14
  899. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +24 -14
  900. data/src/cxx_supportlib/vendor-modified/boost/limits.hpp +12 -12
  901. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +5 -5
  902. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +5 -3
  903. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +20 -19
  904. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +41 -56
  905. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +11 -10
  906. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +3 -2
  907. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +32 -34
  908. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +4 -5
  909. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +11 -11
  910. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +0 -1
  911. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +3 -3
  912. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +5 -6
  913. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  914. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -2
  915. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  916. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +65 -24
  917. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +28 -28
  918. data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +1 -1
  919. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +72 -23
  920. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +81 -1
  921. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +22 -22
  922. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +65 -66
  923. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +2 -2
  924. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +8 -6
  925. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +97 -17
  926. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +9 -0
  927. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/config.hpp +11 -0
  928. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_append.hpp +140 -4
  929. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_defer.hpp +119 -0
  930. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +108 -4
  931. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_front.hpp +13 -1
  932. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_value_list.hpp +41 -0
  933. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list_v.hpp +27 -0
  934. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +1 -1
  935. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_plus.hpp +4 -1
  936. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_rename.hpp +18 -5
  937. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_value.hpp +25 -0
  938. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +9 -0
  939. data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +10 -0
  940. data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +180 -3
  941. data/src/cxx_supportlib/vendor-modified/boost/mp11/utility.hpp +2 -96
  942. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  943. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +3 -3
  944. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +3 -44
  945. data/src/cxx_supportlib/vendor-modified/boost/nondet_random.hpp +22 -0
  946. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +8 -0
  947. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +5 -4
  948. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +3 -3
  949. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +2 -2
  950. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
  951. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +6 -6
  952. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
  953. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +4 -4
  954. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +2 -2
  955. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +1 -1
  956. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +1 -1
  957. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +4 -4
  958. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +1 -1
  959. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +1 -1
  960. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +3 -3
  961. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +1 -1
  962. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +1 -1
  963. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +3 -3
  964. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  965. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +13 -0
  966. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msvc.h +53 -0
  967. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +1 -0
  968. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  969. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +1 -1
  970. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  971. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +2 -0
  972. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +1 -1
  973. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +203 -0
  974. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +14 -14
  975. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +2 -2
  976. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +1 -0
  977. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +4 -82
  978. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/gcd_lcm.hpp +53 -0
  979. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_evenly_divisible_by.hpp +32 -0
  980. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_ratio.hpp +28 -0
  981. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +1 -3
  982. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +5 -249
  983. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +30 -56
  984. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +0 -533
  985. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -7
  986. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +9 -9
  987. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +7 -7
  988. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +1 -0
  989. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +23 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +1 -1
  991. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +4 -6
  992. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +1 -0
  993. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +2 -11
  994. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -0
  995. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +1 -0
  996. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +1 -0
  997. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +70 -0
  998. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +1 -0
  999. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +1 -0
  1000. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +2 -0
  1001. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -11
  1002. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +1 -0
  1003. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +4 -8
  1004. data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +3 -12
  1005. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +14 -50
  1006. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +16 -55
  1007. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +62 -124
  1008. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +29 -52
  1009. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +7 -7
  1010. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +4 -4
  1011. data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +7 -7
  1012. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +3 -13
  1013. data/src/cxx_supportlib/vendor-modified/boost/system/detail/mutex.hpp +128 -0
  1014. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +1 -46
  1015. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +14 -13
  1016. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +2 -2
  1017. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +7 -7
  1018. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +3 -3
  1019. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +2 -2
  1020. data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +3 -3
  1021. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +1 -1
  1022. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +1 -24
  1023. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +1 -14
  1024. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +1 -14
  1025. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +2 -12
  1026. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +0 -11
  1027. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +0 -2
  1028. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +0 -16
  1029. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +0 -11
  1030. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +0 -11
  1031. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +0 -19
  1032. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +4 -6
  1033. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -26
  1034. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +1 -18
  1035. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +1 -14
  1036. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +11 -4
  1037. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_to_unsigned.hpp +55 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_trim.hpp +29 -0
  1039. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +5 -5
  1040. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +0 -1
  1041. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +3 -2
  1042. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +4 -4
  1043. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +2 -2
  1044. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +3 -3
  1045. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -1
  1046. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_swappable_cxx_11.hpp +70 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +22 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +4 -24
  1050. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_swappable.hpp +92 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +2 -3
  1052. data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +1 -10
  1053. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -6
  1054. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +2 -4
  1055. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +2 -4
  1056. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +2 -5
  1057. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +2 -15
  1058. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +4 -51
  1059. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +2 -6
  1060. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +2 -9
  1061. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +2 -46
  1062. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +2 -5
  1063. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +2 -29
  1064. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +2 -9
  1065. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +4 -9
  1066. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +2 -6
  1067. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +2 -5
  1068. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +2 -9
  1069. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +2 -19
  1070. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +2 -5
  1071. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +2 -5
  1072. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +2 -12
  1073. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +2 -4
  1074. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +2 -10
  1075. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +2 -5
  1076. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +8 -202
  1077. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +860 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +51 -0
  1079. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +716 -0
  1080. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +52 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocator_constructed.hpp +59 -0
  1082. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/archive_constructed.hpp +71 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/bad_archive_exception.hpp +27 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +105 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +120 -85
  1086. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +1764 -0
  1087. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2271 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/element_type.hpp +64 -0
  1089. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +86 -0
  1090. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_set_types.hpp +44 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/ignore_wshadow.hpp +35 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +204 -0
  1093. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +139 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +92 -0
  1095. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/reentrancy_check.hpp +138 -0
  1096. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/restore_wshadow.hpp +11 -0
  1097. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/rw_spinlock.hpp +179 -0
  1098. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +651 -0
  1099. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/tuple_rotate_right.hpp +52 -0
  1100. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +356 -1118
  1101. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +2 -0
  1102. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/mulx.hpp +129 -0
  1103. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/narrow_cast.hpp +44 -0
  1104. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/opt_storage.hpp +30 -0
  1105. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +96 -150
  1106. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialization_version.hpp +74 -0
  1107. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_container.hpp +204 -0
  1108. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_fca_container.hpp +156 -0
  1109. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_tracked_address.hpp +104 -0
  1110. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/static_assert.hpp +16 -0
  1111. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/throw_exception.hpp +30 -0
  1112. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +136 -19
  1113. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +4 -5
  1114. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +171 -103
  1115. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +1 -6
  1116. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +70 -46
  1117. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +1 -6
  1118. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +406 -899
  1119. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +7 -13
  1120. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +895 -0
  1121. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +44 -0
  1122. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +699 -0
  1123. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +44 -0
  1124. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +253 -618
  1125. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +8 -14
  1126. data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +4 -1
  1127. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +8 -8
  1128. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1129. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +2 -9
  1130. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +0 -11
  1131. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +14 -20
  1132. data/src/helper-scripts/wsgi-loader.py +2 -2
  1133. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +2 -2
  1134. data/src/ruby_supportlib/phusion_passenger/common_library.rb +16 -5
  1135. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +1 -1
  1136. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +3 -1
  1137. data/src/ruby_supportlib/phusion_passenger/native_support.rb +10 -7
  1138. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +8 -10
  1139. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +14 -0
  1140. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +4 -1
  1141. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +6 -6
  1142. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +11 -12
  1143. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -1
  1144. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +4 -0
  1145. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +5 -1
  1146. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  1147. metadata +109 -150
  1148. data/src/cxx_supportlib/ServerKit/http_parser.cpp +0 -2265
  1149. data/src/cxx_supportlib/ServerKit/http_parser.h +0 -330
  1150. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +0 -456
  1151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +0 -90
  1152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +0 -93
  1153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +0 -70
  1154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +0 -67
  1155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +0 -101
  1156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +0 -80
  1157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +0 -64
  1158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +0 -216
  1159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +0 -64
  1160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +0 -294
  1161. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +0 -406
  1162. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +0 -1254
  1163. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +0 -498
  1164. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +0 -154
  1165. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +0 -111
  1166. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +0 -130
  1167. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +0 -263
  1168. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +0 -235
  1169. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +0 -92
  1170. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +0 -296
  1171. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +0 -38
  1172. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +0 -101
  1173. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +0 -287
  1174. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +0 -50
  1175. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +0 -296
  1176. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +0 -93
  1177. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +0 -318
  1178. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +0 -259
  1179. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +0 -259
  1180. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +0 -492
  1181. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +0 -256
  1182. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +0 -459
  1183. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +0 -106
  1184. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +0 -113
  1185. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +0 -300
  1186. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +0 -275
  1187. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +0 -64
  1188. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +0 -300
  1189. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +0 -116
  1190. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +0 -116
  1191. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +0 -114
  1192. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +0 -114
  1193. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +0 -110
  1194. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +0 -110
  1195. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +0 -110
  1196. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +0 -110
  1197. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +0 -110
  1198. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +0 -114
  1199. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +0 -114
  1200. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +0 -236
  1201. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +0 -236
  1202. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +0 -110
  1203. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +0 -110
  1204. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +0 -114
  1205. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +0 -114
  1206. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +0 -495
  1207. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +0 -462
  1208. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +0 -581
  1209. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +0 -563
  1210. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +0 -40
  1211. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +0 -41
  1212. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +0 -147
  1213. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +0 -39
  1214. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +0 -39
  1215. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +0 -201
  1216. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +0 -67
  1217. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +0 -57
  1218. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +0 -179
  1219. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +0 -228
  1220. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +0 -441
  1221. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +0 -345
  1222. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +0 -103
  1223. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_template.hpp +0 -1047
  1224. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +0 -130
  1225. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +0 -475
  1226. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +0 -71
  1227. data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +0 -1278
  1228. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +0 -133
  1229. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1230. data/src/cxx_supportlib/vendor-modified/boost/function/detail/function_iterate.hpp +0 -16
  1231. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +0 -39
  1232. data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +0 -369
  1233. data/src/cxx_supportlib/vendor-modified/boost/function/detail/prologue.hpp +0 -26
  1234. data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +0 -26
  1235. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +0 -6
  1236. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +0 -89
  1237. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +0 -124
  1238. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +0 -126
  1239. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +0 -89
  1240. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +0 -367
  1241. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +0 -1342
  1242. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +0 -30
  1243. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +0 -22
  1244. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +0 -19
  1245. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +0 -30
  1246. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +0 -30
  1247. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +0 -30
  1248. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +0 -30
  1249. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +0 -30
  1250. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +0 -30
  1251. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +0 -30
  1252. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +0 -30
  1253. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +0 -30
  1254. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +0 -30
  1255. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +0 -30
  1256. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +0 -31
  1257. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +0 -30
  1258. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +0 -25
  1259. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +0 -15
  1260. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +0 -30
  1261. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +0 -30
  1262. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +0 -51
  1263. data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +0 -17
  1264. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +0 -278
  1265. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +0 -297
  1266. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +0 -265
  1267. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +0 -100
  1268. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -58
  1269. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +0 -34
  1270. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +0 -118
  1271. data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +0 -80
  1272. data/src/cxx_supportlib/vendor-modified/boost/typeof/message.hpp +0 -8
  1273. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +0 -121
  1274. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +0 -60
  1275. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +0 -38
  1276. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +0 -50
  1277. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +0 -135
  1278. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +0 -61
  1279. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +0 -32
  1280. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +0 -160
  1281. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +0 -149
  1282. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +0 -27
  1283. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +0 -37
  1284. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +0 -187
  1285. data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +0 -29
  1286. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +0 -166
  1287. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +0 -321
  1288. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +0 -471
  1289. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +0 -621
  1290. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +0 -171
  1291. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +0 -1921
  1292. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +0 -64
  1293. /data/dev/{webpacketpp.patch → websocketpp.patch} +0 -0
@@ -8,45 +8,33 @@
8
8
  #endif
9
9
 
10
10
  //
11
- // bind.hpp - binds function objects to arguments
11
+ // bind.hpp - binds function objects to arguments
12
12
  //
13
- // Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
14
- // Copyright (c) 2001 David Abrahams
15
- // Copyright (c) 2005 Peter Dimov
13
+ // Copyright 2001-2005, 2024 Peter Dimov
14
+ // Copyright 2001 David Abrahams
16
15
  //
17
16
  // Distributed under the Boost Software License, Version 1.0. (See
18
17
  // accompanying file LICENSE_1_0.txt or copy at
19
18
  // http://www.boost.org/LICENSE_1_0.txt)
20
19
  //
21
- // See http://www.boost.org/libs/bind/bind.html for documentation.
20
+ // See http://www.boost.org/libs/bind for documentation.
22
21
  //
23
22
 
24
- #include <boost/config.hpp>
25
- #include <boost/ref.hpp>
26
23
  #include <boost/bind/mem_fn.hpp>
27
- #include <boost/type.hpp>
28
- #include <boost/is_placeholder.hpp>
29
24
  #include <boost/bind/arg.hpp>
30
- #include <boost/bind/detail/result_traits.hpp>
31
25
  #include <boost/bind/std_placeholders.hpp>
32
- #include <boost/detail/workaround.hpp>
26
+ #include <boost/bind/detail/result_traits.hpp>
27
+ #include <boost/bind/detail/tuple_for_each.hpp>
28
+ #include <boost/bind/detail/integer_sequence.hpp>
33
29
  #include <boost/visit_each.hpp>
34
- #include <boost/core/enable_if.hpp>
35
- #include <boost/core/is_same.hpp>
36
-
37
- #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
38
- #include <utility> // std::forward
39
- #endif
40
-
41
- // Borland-specific bug, visit_each() silently fails to produce code
42
-
43
- #if defined(BOOST_BORLANDC)
44
- # define BOOST_BIND_VISIT_EACH boost::visit_each
45
- #else
46
- # define BOOST_BIND_VISIT_EACH visit_each
47
- #endif
48
-
49
- #include <boost/bind/storage.hpp>
30
+ #include <boost/is_placeholder.hpp>
31
+ #include <boost/type.hpp>
32
+ #include <boost/core/ref.hpp>
33
+ #include <boost/config.hpp>
34
+ #include <boost/config/workaround.hpp>
35
+ #include <utility>
36
+ #include <type_traits>
37
+ #include <tuple>
50
38
 
51
39
  #ifdef BOOST_MSVC
52
40
  # pragma warning(push)
@@ -63,22 +51,22 @@ namespace _bi // implementation details
63
51
 
64
52
  // ref_compare
65
53
 
66
- template<class T> bool ref_compare( T const & a, T const & b, long )
54
+ template<class T> bool ref_compare( T const & a, T const & b )
67
55
  {
68
56
  return a == b;
69
57
  }
70
58
 
71
- template<int I> bool ref_compare( arg<I> const &, arg<I> const &, int )
59
+ template<int I> bool ref_compare( arg<I> const &, arg<I> const & )
72
60
  {
73
61
  return true;
74
62
  }
75
63
 
76
- template<int I> bool ref_compare( arg<I> (*) (), arg<I> (*) (), int )
64
+ template<int I> bool ref_compare( arg<I> (*) (), arg<I> (*) () )
77
65
  {
78
66
  return true;
79
67
  }
80
68
 
81
- template<class T> bool ref_compare( reference_wrapper<T> const & a, reference_wrapper<T> const & b, int )
69
+ template<class T> bool ref_compare( reference_wrapper<T> const & a, reference_wrapper<T> const & b )
82
70
  {
83
71
  return a.get_pointer() == b.get_pointer();
84
72
  }
@@ -87,7 +75,7 @@ template<class T> bool ref_compare( reference_wrapper<T> const & a, reference_wr
87
75
 
88
76
  template<class R, class F, class L> class bind_t;
89
77
 
90
- template<class R, class F, class L> bool ref_compare( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b, int )
78
+ template<class R, class F, class L> bool ref_compare( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b )
91
79
  {
92
80
  return a.compare( b );
93
81
  }
@@ -115,7 +103,7 @@ private:
115
103
 
116
104
  // ref_compare for weak_ptr
117
105
 
118
- template<class T> bool ref_compare( value< weak_ptr<T> > const & a, value< weak_ptr<T> > const & b, int )
106
+ template<class T> bool ref_compare( value< weak_ptr<T> > const & a, value< weak_ptr<T> > const & b )
119
107
  {
120
108
  return !(a.get() < b.get()) && !(b.get() < a.get());
121
109
  }
@@ -144,1409 +132,235 @@ template<class F> struct unwrapper
144
132
  }
145
133
  };
146
134
 
147
- // listN
135
+ // list
148
136
 
149
- class list0
137
+ template<class V> struct accept_lambda
150
138
  {
151
- public:
152
-
153
- list0() {}
154
-
155
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
156
-
157
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
158
-
159
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
160
-
161
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
162
-
163
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
164
-
165
- template<class R, class F, class A> R operator()(type<R>, F & f, A &, long)
166
- {
167
- return unwrapper<F>::unwrap(f, 0)();
168
- }
169
-
170
- template<class R, class F, class A> R operator()(type<R>, F const & f, A &, long) const
171
- {
172
- return unwrapper<F const>::unwrap(f, 0)();
173
- }
174
-
175
- template<class F, class A> void operator()(type<void>, F & f, A &, int)
176
- {
177
- unwrapper<F>::unwrap(f, 0)();
178
- }
179
-
180
- template<class F, class A> void operator()(type<void>, F const & f, A &, int) const
181
- {
182
- unwrapper<F const>::unwrap(f, 0)();
183
- }
139
+ V& v_;
184
140
 
185
- template<class V> void accept(V &) const
186
- {
187
- }
141
+ explicit accept_lambda( V& v ): v_( v ) {}
188
142
 
189
- bool operator==(list0 const &) const
143
+ template<class A> void operator()( A& a ) const
190
144
  {
191
- return true;
145
+ visit_each( v_, a, 0 );
192
146
  }
193
147
  };
194
148
 
195
- #ifdef BOOST_MSVC
196
- // MSVC is bright enough to realise that the parameter rhs
197
- // in operator==may be unused for some template argument types:
198
- #pragma warning(push)
199
- #pragma warning(disable:4100)
200
- #endif
201
-
202
- template< class A1 > class list1: private storage1< A1 >
149
+ struct equal_lambda
203
150
  {
204
- private:
205
-
206
- typedef storage1< A1 > base_type;
207
-
208
- public:
209
-
210
- explicit list1( A1 a1 ): base_type( a1 ) {}
211
-
212
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
213
-
214
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
215
-
216
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
217
-
218
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
219
-
220
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
221
-
222
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
223
-
224
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
225
-
226
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
227
- {
228
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_]);
229
- }
230
-
231
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
232
- {
233
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_]);
234
- }
235
-
236
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
237
- {
238
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_]);
239
- }
240
-
241
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
242
- {
243
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_]);
244
- }
151
+ bool result;
245
152
 
246
- template<class V> void accept(V & v) const
247
- {
248
- base_type::accept(v);
249
- }
153
+ equal_lambda(): result( true ) {}
250
154
 
251
- bool operator==(list1 const & rhs) const
155
+ template<class A1, class A2> void operator()( A1& a1, A2& a2 )
252
156
  {
253
- return ref_compare(base_type::a1_, rhs.a1_, 0);
157
+ result = result && ref_compare( a1, a2 );
254
158
  }
255
159
  };
256
160
 
257
161
  struct logical_and;
258
162
  struct logical_or;
259
163
 
260
- template< class A1, class A2 > class list2: private storage2< A1, A2 >
261
- {
262
- private:
263
-
264
- typedef storage2< A1, A2 > base_type;
265
-
266
- public:
267
-
268
- list2( A1 a1, A2 a2 ): base_type( a1, a2 ) {}
269
-
270
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
271
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
272
-
273
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
274
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
275
-
276
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
277
-
278
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
279
-
280
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
281
-
282
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
283
-
284
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
285
-
286
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
287
- {
288
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
289
- }
290
-
291
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
292
- {
293
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
294
- }
295
-
296
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
297
- {
298
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
299
- }
300
-
301
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
302
- {
303
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
304
- }
305
-
306
- template<class A> bool operator()( type<bool>, logical_and & /*f*/, A & a, int )
307
- {
308
- return a[ base_type::a1_ ] && a[ base_type::a2_ ];
309
- }
310
-
311
- template<class A> bool operator()( type<bool>, logical_and const & /*f*/, A & a, int ) const
312
- {
313
- return a[ base_type::a1_ ] && a[ base_type::a2_ ];
314
- }
315
-
316
- template<class A> bool operator()( type<bool>, logical_or & /*f*/, A & a, int )
317
- {
318
- return a[ base_type::a1_ ] || a[ base_type::a2_ ];
319
- }
320
-
321
- template<class A> bool operator()( type<bool>, logical_or const & /*f*/, A & a, int ) const
322
- {
323
- return a[ base_type::a1_ ] || a[ base_type::a2_ ];
324
- }
325
-
326
- template<class V> void accept(V & v) const
327
- {
328
- base_type::accept(v);
329
- }
330
-
331
- bool operator==(list2 const & rhs) const
332
- {
333
- return ref_compare(base_type::a1_, rhs.a1_, 0) && ref_compare(base_type::a2_, rhs.a2_, 0);
334
- }
335
- };
336
-
337
- template< class A1, class A2, class A3 > class list3: private storage3< A1, A2, A3 >
338
- {
339
- private:
340
-
341
- typedef storage3< A1, A2, A3 > base_type;
342
-
343
- public:
344
-
345
- list3( A1 a1, A2 a2, A3 a3 ): base_type( a1, a2, a3 ) {}
346
-
347
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
348
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
349
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
350
-
351
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
352
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
353
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
354
-
355
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
356
-
357
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
358
-
359
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
360
-
361
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
362
-
363
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
364
-
365
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
366
- {
367
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
368
- }
369
-
370
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
371
- {
372
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
373
- }
374
-
375
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
376
- {
377
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
378
- }
379
-
380
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
381
- {
382
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
383
- }
384
-
385
- template<class V> void accept(V & v) const
386
- {
387
- base_type::accept(v);
388
- }
389
-
390
- bool operator==(list3 const & rhs) const
391
- {
392
- return
393
-
394
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
395
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
396
- ref_compare( base_type::a3_, rhs.a3_, 0 );
397
- }
398
- };
399
-
400
- template< class A1, class A2, class A3, class A4 > class list4: private storage4< A1, A2, A3, A4 >
401
- {
402
- private:
403
-
404
- typedef storage4< A1, A2, A3, A4 > base_type;
405
-
406
- public:
407
-
408
- list4( A1 a1, A2 a2, A3 a3, A4 a4 ): base_type( a1, a2, a3, a4 ) {}
409
-
410
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
411
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
412
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
413
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
414
-
415
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
416
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
417
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
418
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
419
-
420
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
421
-
422
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
423
-
424
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
425
-
426
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
427
-
428
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
429
-
430
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
431
- {
432
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
433
- }
434
-
435
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
436
- {
437
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
438
- }
439
-
440
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
441
- {
442
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
443
- }
444
-
445
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
446
- {
447
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
448
- }
449
-
450
- template<class V> void accept(V & v) const
451
- {
452
- base_type::accept(v);
453
- }
454
-
455
- bool operator==(list4 const & rhs) const
456
- {
457
- return
458
-
459
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
460
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
461
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
462
- ref_compare( base_type::a4_, rhs.a4_, 0 );
463
- }
464
- };
465
-
466
- template< class A1, class A2, class A3, class A4, class A5 > class list5: private storage5< A1, A2, A3, A4, A5 >
467
- {
468
- private:
469
-
470
- typedef storage5< A1, A2, A3, A4, A5 > base_type;
471
-
472
- public:
473
-
474
- list5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): base_type( a1, a2, a3, a4, a5 ) {}
475
-
476
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
477
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
478
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
479
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
480
- A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
481
-
482
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
483
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
484
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
485
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
486
- A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
487
-
488
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
489
-
490
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
491
-
492
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
493
-
494
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
495
-
496
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
497
-
498
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
499
- {
500
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
501
- }
502
-
503
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
504
- {
505
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
506
- }
507
-
508
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
509
- {
510
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
511
- }
512
-
513
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
514
- {
515
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
516
- }
517
-
518
- template<class V> void accept(V & v) const
519
- {
520
- base_type::accept(v);
521
- }
522
-
523
- bool operator==(list5 const & rhs) const
524
- {
525
- return
526
-
527
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
528
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
529
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
530
- ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
531
- ref_compare( base_type::a5_, rhs.a5_, 0 );
532
- }
533
- };
534
-
535
- template<class A1, class A2, class A3, class A4, class A5, class A6> class list6: private storage6< A1, A2, A3, A4, A5, A6 >
164
+ template<class... A> class list
536
165
  {
537
166
  private:
538
167
 
539
- typedef storage6< A1, A2, A3, A4, A5, A6 > base_type;
168
+ typedef std::tuple<A...> data_type;
169
+ data_type data_;
540
170
 
541
171
  public:
542
172
 
543
- list6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): base_type( a1, a2, a3, a4, a5, a6 ) {}
544
-
545
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
546
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
547
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
548
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
549
- A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
550
- A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
551
-
552
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
553
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
554
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
555
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
556
- A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
557
- A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
558
-
559
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
560
-
561
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
562
-
563
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
564
-
565
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
566
-
567
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
568
-
569
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
570
- {
571
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
572
- }
573
-
574
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
575
- {
576
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
577
- }
578
-
579
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
580
- {
581
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
582
- }
173
+ list( A... a ): data_( a... ) {}
583
174
 
584
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
585
- {
586
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
587
- }
175
+ #if defined(BOOST_MSVC)
176
+ # pragma warning( push )
177
+ # pragma warning( disable: 4100 ) // unreferenced formal parameter 'a2'
178
+ #endif
588
179
 
589
- template<class V> void accept(V & v) const
180
+ template<class R, class F, class A2, std::size_t... I> R call_impl( type<R>, F & f, A2 & a2, _bi::index_sequence<I...> )
590
181
  {
591
- base_type::accept(v);
182
+ return unwrapper<F>::unwrap( f, 0 )( a2[ std::get<I>( data_ ) ]... );
592
183
  }
593
184
 
594
- bool operator==(list6 const & rhs) const
185
+ template<class R, class F, class A2, std::size_t... I> R call_impl( type<R>, F & f, A2 & a2, _bi::index_sequence<I...> ) const
595
186
  {
596
- return
597
-
598
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
599
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
600
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
601
- ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
602
- ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
603
- ref_compare( base_type::a6_, rhs.a6_, 0 );
187
+ return unwrapper<F>::unwrap( f, 0 )( a2[ std::get<I>( data_ ) ]... );
604
188
  }
605
- };
606
-
607
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> class list7: private storage7< A1, A2, A3, A4, A5, A6, A7 >
608
- {
609
- private:
610
-
611
- typedef storage7< A1, A2, A3, A4, A5, A6, A7 > base_type;
612
-
613
- public:
614
189
 
615
- list7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): base_type( a1, a2, a3, a4, a5, a6, a7 ) {}
616
-
617
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
618
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
619
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
620
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
621
- A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
622
- A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
623
- A7 operator[] (boost::arg<7>) const { return base_type::a7_; }
624
-
625
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
626
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
627
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
628
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
629
- A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
630
- A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
631
- A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
632
-
633
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
634
-
635
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
636
-
637
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
638
-
639
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
640
-
641
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
642
-
643
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
190
+ template<class F, class A2, std::size_t... I> void call_impl( type<void>, F & f, A2 & a2, _bi::index_sequence<I...> )
644
191
  {
645
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
192
+ unwrapper<F>::unwrap( f, 0 )( a2[ std::get<I>( data_ ) ]... );
646
193
  }
647
194
 
648
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
195
+ template<class F, class A2, std::size_t... I> void call_impl( type<void>, F & f, A2 & a2, _bi::index_sequence<I...> ) const
649
196
  {
650
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
197
+ unwrapper<F>::unwrap( f, 0 )( a2[ std::get<I>( data_ ) ]... );
651
198
  }
652
199
 
653
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
654
- {
655
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
656
- }
200
+ #if defined(BOOST_MSVC)
201
+ # pragma warning( pop )
202
+ #endif
657
203
 
658
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
659
- {
660
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
661
- }
204
+ //
662
205
 
663
- template<class V> void accept(V & v) const
206
+ template<class R, class F, class A2> R operator()( type<R>, F & f, A2 & a2 )
664
207
  {
665
- base_type::accept(v);
208
+ return call_impl( type<R>(), f, a2, _bi::index_sequence_for<A...>() );
666
209
  }
667
210
 
668
- bool operator==(list7 const & rhs) const
211
+ template<class R, class F, class A2> R operator()( type<R>, F & f, A2 & a2 ) const
669
212
  {
670
- return
671
-
672
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
673
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
674
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
675
- ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
676
- ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
677
- ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
678
- ref_compare( base_type::a7_, rhs.a7_, 0 );
213
+ return call_impl( type<R>(), f, a2, _bi::index_sequence_for<A...>() );
679
214
  }
680
- };
681
-
682
- template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class list8: private storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
683
- {
684
- private:
685
-
686
- typedef storage8< A1, A2, A3, A4, A5, A6, A7, A8 > base_type;
687
-
688
- public:
689
-
690
- list8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
691
-
692
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
693
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
694
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
695
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
696
- A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
697
- A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
698
- A7 operator[] (boost::arg<7>) const { return base_type::a7_; }
699
- A8 operator[] (boost::arg<8>) const { return base_type::a8_; }
700
-
701
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
702
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
703
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
704
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
705
- A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
706
- A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
707
- A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
708
- A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; }
709
-
710
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
711
-
712
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
713
-
714
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
715
-
716
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
717
-
718
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
719
-
720
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
721
- {
722
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
723
- }
724
-
725
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
726
- {
727
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
728
- }
729
-
730
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
731
- {
732
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
733
- }
734
-
735
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
736
- {
737
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
738
- }
739
-
740
- template<class V> void accept(V & v) const
741
- {
742
- base_type::accept(v);
743
- }
744
-
745
- bool operator==(list8 const & rhs) const
746
- {
747
- return
748
-
749
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
750
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
751
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
752
- ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
753
- ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
754
- ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
755
- ref_compare( base_type::a7_, rhs.a7_, 0 ) &&
756
- ref_compare( base_type::a8_, rhs.a8_, 0 );
757
- }
758
- };
759
-
760
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class list9: private storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 >
761
- {
762
- private:
763
-
764
- typedef storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > base_type;
765
-
766
- public:
767
-
768
- list9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) {}
769
-
770
- A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
771
- A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
772
- A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
773
- A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
774
- A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
775
- A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
776
- A7 operator[] (boost::arg<7>) const { return base_type::a7_; }
777
- A8 operator[] (boost::arg<8>) const { return base_type::a8_; }
778
- A9 operator[] (boost::arg<9>) const { return base_type::a9_; }
779
-
780
- A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
781
- A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
782
- A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
783
- A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
784
- A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
785
- A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
786
- A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
787
- A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; }
788
- A9 operator[] (boost::arg<9> (*) ()) const { return base_type::a9_; }
789
-
790
- template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
791
-
792
- template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
793
-
794
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
795
-
796
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
797
-
798
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
799
-
800
- template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
801
- {
802
- return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
803
- }
804
-
805
- template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
806
- {
807
- return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
808
- }
809
-
810
- template<class F, class A> void operator()(type<void>, F & f, A & a, int)
811
- {
812
- unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
813
- }
814
-
815
- template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
816
- {
817
- unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
818
- }
819
-
820
- template<class V> void accept(V & v) const
821
- {
822
- base_type::accept(v);
823
- }
824
-
825
- bool operator==(list9 const & rhs) const
826
- {
827
- return
828
-
829
- ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
830
- ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
831
- ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
832
- ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
833
- ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
834
- ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
835
- ref_compare( base_type::a7_, rhs.a7_, 0 ) &&
836
- ref_compare( base_type::a8_, rhs.a8_, 0 ) &&
837
- ref_compare( base_type::a9_, rhs.a9_, 0 );
838
- }
839
- };
840
-
841
- #ifdef BOOST_MSVC
842
- #pragma warning(pop)
843
- #endif
844
-
845
- // bind_t
846
-
847
- #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !(defined(BOOST_GCC) && BOOST_GCC < 40600)
848
-
849
- template< class A1 > class rrlist1
850
- {
851
- private:
852
-
853
- A1 & a1_; // not A1&& because of msvc-10.0
854
-
855
- public:
856
-
857
- explicit rrlist1( A1 & a1 ): a1_( a1 ) {}
858
-
859
- A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } // not static_cast because of g++ 4.9
860
-
861
- A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
862
-
863
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
864
-
865
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
866
-
867
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
868
-
869
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
870
- {
871
- rrlist1<A1&> a( a1_ );
872
- return b.eval( a );
873
- }
874
-
875
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
876
- {
877
- rrlist1<A1&> a( a1_ );
878
- return b.eval( a );
879
- }
880
- };
881
-
882
- template< class A1, class A2 > class rrlist2
883
- {
884
- private:
885
-
886
- A1 & a1_;
887
- A2 & a2_;
888
-
889
- public:
890
-
891
- rrlist2( A1 & a1, A2 & a2 ): a1_( a1 ), a2_( a2 ) {}
892
-
893
- A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
894
- A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
895
-
896
- A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
897
- A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
898
-
899
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
900
-
901
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
902
-
903
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
904
-
905
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
906
- {
907
- rrlist2<A1&, A2&> a( a1_, a2_ );
908
- return b.eval( a );
909
- }
910
-
911
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
912
- {
913
- rrlist2<A1&, A2&> a( a1_, a2_ );
914
- return b.eval( a );
915
- }
916
- };
917
-
918
- template< class A1, class A2, class A3 > class rrlist3
919
- {
920
- private:
921
-
922
- A1 & a1_;
923
- A2 & a2_;
924
- A3 & a3_;
925
-
926
- public:
927
-
928
- rrlist3( A1 & a1, A2 & a2, A3 & a3 ): a1_( a1 ), a2_( a2 ), a3_( a3 ) {}
929
-
930
- A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
931
- A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
932
- A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
933
-
934
- A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
935
- A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
936
- A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
937
-
938
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
939
-
940
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
941
-
942
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
943
-
944
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
945
- {
946
- rrlist3<A1&, A2&, A3&> a( a1_, a2_, a3_ );
947
- return b.eval( a );
948
- }
949
-
950
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
951
- {
952
- rrlist3<A1&, A2&, A3&> a( a1_, a2_, a3_ );
953
- return b.eval( a );
954
- }
955
- };
956
-
957
- template< class A1, class A2, class A3, class A4 > class rrlist4
958
- {
959
- private:
960
-
961
- A1 & a1_;
962
- A2 & a2_;
963
- A3 & a3_;
964
- A4 & a4_;
965
-
966
- public:
967
-
968
- rrlist4( A1 & a1, A2 & a2, A3 & a3, A4 & a4 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ) {}
969
-
970
- A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
971
- A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
972
- A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
973
- A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
974
-
975
- A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
976
- A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
977
- A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
978
- A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
979
-
980
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
981
-
982
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
983
-
984
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
985
-
986
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
987
- {
988
- rrlist4<A1&, A2&, A3&, A4&> a( a1_, a2_, a3_, a4_ );
989
- return b.eval( a );
990
- }
991
-
992
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
993
- {
994
- rrlist4<A1&, A2&, A3&, A4&> a( a1_, a2_, a3_, a4_ );
995
- return b.eval( a );
996
- }
997
- };
998
-
999
- template< class A1, class A2, class A3, class A4, class A5 > class rrlist5
1000
- {
1001
- private:
1002
-
1003
- A1 & a1_;
1004
- A2 & a2_;
1005
- A3 & a3_;
1006
- A4 & a4_;
1007
- A5 & a5_;
1008
-
1009
- public:
1010
-
1011
- rrlist5( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ) {}
1012
-
1013
- A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
1014
- A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
1015
- A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
1016
- A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
1017
- A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); }
1018
-
1019
- A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
1020
- A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
1021
- A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
1022
- A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1023
- A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); }
1024
-
1025
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1026
-
1027
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1028
-
1029
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1030
-
1031
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1032
- {
1033
- rrlist5<A1&, A2&, A3&, A4&, A5&> a( a1_, a2_, a3_, a4_, a5_ );
1034
- return b.eval( a );
1035
- }
1036
-
1037
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1038
- {
1039
- rrlist5<A1&, A2&, A3&, A4&, A5&> a( a1_, a2_, a3_, a4_, a5_ );
1040
- return b.eval( a );
1041
- }
1042
- };
1043
-
1044
- template< class A1, class A2, class A3, class A4, class A5, class A6 > class rrlist6
1045
- {
1046
- private:
1047
-
1048
- A1 & a1_;
1049
- A2 & a2_;
1050
- A3 & a3_;
1051
- A4 & a4_;
1052
- A5 & a5_;
1053
- A6 & a6_;
1054
-
1055
- public:
1056
-
1057
- rrlist6( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ) {}
1058
-
1059
- A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
1060
- A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
1061
- A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
1062
- A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
1063
- A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); }
1064
- A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); }
1065
-
1066
- A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
1067
- A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
1068
- A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
1069
- A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1070
- A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); }
1071
- A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); }
1072
-
1073
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1074
-
1075
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1076
-
1077
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1078
-
1079
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1080
- {
1081
- rrlist6<A1&, A2&, A3&, A4&, A5&, A6&> a( a1_, a2_, a3_, a4_, a5_, a6_ );
1082
- return b.eval( a );
1083
- }
1084
-
1085
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1086
- {
1087
- rrlist6<A1&, A2&, A3&, A4&, A5&, A6&> a( a1_, a2_, a3_, a4_, a5_, a6_ );
1088
- return b.eval( a );
1089
- }
1090
- };
1091
-
1092
- template< class A1, class A2, class A3, class A4, class A5, class A6, class A7 > class rrlist7
1093
- {
1094
- private:
1095
-
1096
- A1 & a1_;
1097
- A2 & a2_;
1098
- A3 & a3_;
1099
- A4 & a4_;
1100
- A5 & a5_;
1101
- A6 & a6_;
1102
- A7 & a7_;
1103
-
1104
- public:
1105
-
1106
- rrlist7( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ), a7_( a7 ) {}
1107
-
1108
- A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
1109
- A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
1110
- A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
1111
- A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
1112
- A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); }
1113
- A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); }
1114
- A7 && operator[] (boost::arg<7>) const { return std::forward<A7>( a7_ ); }
1115
-
1116
- A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
1117
- A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
1118
- A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
1119
- A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1120
- A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); }
1121
- A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); }
1122
- A7 && operator[] (boost::arg<7> (*) ()) const { return std::forward<A7>( a7_ ); }
1123
-
1124
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1125
-
1126
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1127
-
1128
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1129
-
1130
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1131
- {
1132
- rrlist7<A1&, A2&, A3&, A4&, A5&, A6&, A7&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_ );
1133
- return b.eval( a );
1134
- }
1135
-
1136
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1137
- {
1138
- rrlist7<A1&, A2&, A3&, A4&, A5&, A6&, A7&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_ );
1139
- return b.eval( a );
1140
- }
1141
- };
1142
-
1143
- template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class rrlist8
1144
- {
1145
- private:
1146
-
1147
- A1 & a1_;
1148
- A2 & a2_;
1149
- A3 & a3_;
1150
- A4 & a4_;
1151
- A5 & a5_;
1152
- A6 & a6_;
1153
- A7 & a7_;
1154
- A8 & a8_;
1155
-
1156
- public:
1157
-
1158
- rrlist8( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ), a7_( a7 ), a8_( a8 ) {}
1159
-
1160
- A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
1161
- A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
1162
- A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
1163
- A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
1164
- A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); }
1165
- A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); }
1166
- A7 && operator[] (boost::arg<7>) const { return std::forward<A7>( a7_ ); }
1167
- A8 && operator[] (boost::arg<8>) const { return std::forward<A8>( a8_ ); }
1168
-
1169
- A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
1170
- A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
1171
- A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
1172
- A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1173
- A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); }
1174
- A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); }
1175
- A7 && operator[] (boost::arg<7> (*) ()) const { return std::forward<A7>( a7_ ); }
1176
- A8 && operator[] (boost::arg<8> (*) ()) const { return std::forward<A8>( a8_ ); }
1177
-
1178
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1179
-
1180
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1181
-
1182
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1183
-
1184
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1185
- {
1186
- rrlist8<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_ );
1187
- return b.eval( a );
1188
- }
1189
-
1190
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1191
- {
1192
- rrlist8<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_ );
1193
- return b.eval( a );
1194
- }
1195
- };
1196
-
1197
- template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9 > class rrlist9
1198
- {
1199
- private:
1200
-
1201
- A1 & a1_;
1202
- A2 & a2_;
1203
- A3 & a3_;
1204
- A4 & a4_;
1205
- A5 & a5_;
1206
- A6 & a6_;
1207
- A7 & a7_;
1208
- A8 & a8_;
1209
- A9 & a9_;
1210
-
1211
- public:
1212
-
1213
- rrlist9( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ), a7_( a7 ), a8_( a8 ), a9_( a9 ) {}
1214
-
1215
- A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
1216
- A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
1217
- A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
1218
- A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
1219
- A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); }
1220
- A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); }
1221
- A7 && operator[] (boost::arg<7>) const { return std::forward<A7>( a7_ ); }
1222
- A8 && operator[] (boost::arg<8>) const { return std::forward<A8>( a8_ ); }
1223
- A9 && operator[] (boost::arg<9>) const { return std::forward<A9>( a9_ ); }
1224
-
1225
- A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
1226
- A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
1227
- A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
1228
- A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1229
- A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); }
1230
- A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); }
1231
- A7 && operator[] (boost::arg<7> (*) ()) const { return std::forward<A7>( a7_ ); }
1232
- A8 && operator[] (boost::arg<8> (*) ()) const { return std::forward<A8>( a8_ ); }
1233
- A9 && operator[] (boost::arg<9> (*) ()) const { return std::forward<A9>( a9_ ); }
1234
-
1235
- template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1236
-
1237
- template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1238
-
1239
- template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1240
-
1241
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1242
- {
1243
- rrlist9<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&, A9&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_ );
1244
- return b.eval( a );
1245
- }
1246
-
1247
- template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1248
- {
1249
- rrlist9<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&, A9&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_ );
1250
- return b.eval( a );
1251
- }
1252
- };
1253
-
1254
- template<class R, class F, class L> class bind_t
1255
- {
1256
- private:
1257
-
1258
- F f_;
1259
- L l_;
1260
-
1261
- public:
1262
-
1263
- typedef typename result_traits<R, F>::type result_type;
1264
- typedef bind_t this_type;
1265
-
1266
- bind_t( F f, L const & l ): f_( f ), l_( l ) {}
1267
215
 
1268
216
  //
1269
217
 
1270
- result_type operator()()
1271
- {
1272
- list0 a;
1273
- return l_( type<result_type>(), f_, a, 0 );
1274
- }
1275
-
1276
- result_type operator()() const
1277
- {
1278
- list0 a;
1279
- return l_( type<result_type>(), f_, a, 0 );
1280
- }
1281
-
1282
- template<class A1> result_type operator()( A1 && a1 )
1283
- {
1284
- rrlist1< A1 > a( a1 );
1285
- return l_( type<result_type>(), f_, a, 0 );
1286
- }
1287
-
1288
- template<class A1> result_type operator()( A1 && a1 ) const
1289
- {
1290
- rrlist1< A1 > a( a1 );
1291
- return l_(type<result_type>(), f_, a, 0);
1292
- }
1293
-
1294
- template<class A1, class A2> result_type operator()( A1 && a1, A2 && a2 )
1295
- {
1296
- rrlist2< A1, A2 > a( a1, a2 );
1297
- return l_( type<result_type>(), f_, a, 0 );
1298
- }
1299
-
1300
- template<class A1, class A2> result_type operator()( A1 && a1, A2 && a2 ) const
1301
- {
1302
- rrlist2< A1, A2 > a( a1, a2 );
1303
- return l_( type<result_type>(), f_, a, 0 );
1304
- }
1305
-
1306
- template<class A1, class A2, class A3> result_type operator()( A1 && a1, A2 && a2, A3 && a3 )
1307
- {
1308
- rrlist3< A1, A2, A3 > a( a1, a2, a3 );
1309
- return l_( type<result_type>(), f_, a, 0 );
1310
- }
1311
-
1312
- template<class A1, class A2, class A3> result_type operator()( A1 && a1, A2 && a2, A3 && a3 ) const
1313
- {
1314
- rrlist3< A1, A2, A3 > a( a1, a2, a3 );
1315
- return l_( type<result_type>(), f_, a, 0 );
1316
- }
1317
-
1318
- template<class A1, class A2, class A3, class A4> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4 )
1319
- {
1320
- rrlist4< A1, A2, A3, A4 > a( a1, a2, a3, a4 );
1321
- return l_( type<result_type>(), f_, a, 0 );
1322
- }
1323
-
1324
- template<class A1, class A2, class A3, class A4> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4 ) const
1325
- {
1326
- rrlist4< A1, A2, A3, A4 > a( a1, a2, a3, a4 );
1327
- return l_( type<result_type>(), f_, a, 0 );
1328
- }
1329
-
1330
- template<class A1, class A2, class A3, class A4, class A5> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5 )
1331
- {
1332
- rrlist5< A1, A2, A3, A4, A5 > a( a1, a2, a3, a4, a5 );
1333
- return l_( type<result_type>(), f_, a, 0 );
1334
- }
1335
-
1336
- template<class A1, class A2, class A3, class A4, class A5> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5 ) const
1337
- {
1338
- rrlist5< A1, A2, A3, A4, A5 > a( a1, a2, a3, a4, a5 );
1339
- return l_( type<result_type>(), f_, a, 0 );
1340
- }
1341
-
1342
- template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6 )
1343
- {
1344
- rrlist6< A1, A2, A3, A4, A5, A6 > a( a1, a2, a3, a4, a5, a6 );
1345
- return l_( type<result_type>(), f_, a, 0 );
1346
- }
1347
-
1348
- template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6 ) const
1349
- {
1350
- rrlist6< A1, A2, A3, A4, A5, A6 > a( a1, a2, a3, a4, a5, a6 );
1351
- return l_( type<result_type>(), f_, a, 0 );
1352
- }
1353
-
1354
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7 )
1355
- {
1356
- rrlist7< A1, A2, A3, A4, A5, A6, A7 > a( a1, a2, a3, a4, a5, a6, a7 );
1357
- return l_( type<result_type>(), f_, a, 0 );
1358
- }
1359
-
1360
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7 ) const
1361
- {
1362
- rrlist7< A1, A2, A3, A4, A5, A6, A7 > a( a1, a2, a3, a4, a5, a6, a7 );
1363
- return l_( type<result_type>(), f_, a, 0 );
1364
- }
1365
-
1366
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8 )
1367
- {
1368
- rrlist8< A1, A2, A3, A4, A5, A6, A7, A8 > a( a1, a2, a3, a4, a5, a6, a7, a8 );
1369
- return l_( type<result_type>(), f_, a, 0 );
1370
- }
1371
-
1372
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8 ) const
1373
- {
1374
- rrlist8< A1, A2, A3, A4, A5, A6, A7, A8 > a( a1, a2, a3, a4, a5, a6, a7, a8 );
1375
- return l_( type<result_type>(), f_, a, 0 );
1376
- }
1377
-
1378
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8, A9 && a9 )
218
+ template<class A2> bool operator()( type<bool>, logical_and & /*f*/, A2 & a2 )
1379
219
  {
1380
- rrlist9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > a( a1, a2, a3, a4, a5, a6, a7, a8, a9 );
1381
- return l_( type<result_type>(), f_, a, 0 );
220
+ static_assert( sizeof...(A) == 2, "operator&& must have two arguments" );
221
+ return a2[ std::get<0>( data_ ) ] && a2[ std::get<1>( data_ ) ];
1382
222
  }
1383
223
 
1384
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8, A9 && a9 ) const
224
+ template<class A2> bool operator()( type<bool>, logical_and const & /*f*/, A2 & a2 ) const
1385
225
  {
1386
- rrlist9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > a( a1, a2, a3, a4, a5, a6, a7, a8, a9 );
1387
- return l_( type<result_type>(), f_, a, 0 );
226
+ static_assert( sizeof...(A) == 2, "operator&& must have two arguments" );
227
+ return a2[ std::get<0>( data_ ) ] && a2[ std::get<1>( data_ ) ];
1388
228
  }
1389
229
 
1390
- //
1391
-
1392
- template<class A> result_type eval( A & a )
230
+ template<class A2> bool operator()( type<bool>, logical_or & /*f*/, A2 & a2 )
1393
231
  {
1394
- return l_( type<result_type>(), f_, a, 0 );
232
+ static_assert( sizeof...(A) == 2, "operator|| must have two arguments" );
233
+ return a2[ std::get<0>( data_ ) ] || a2[ std::get<1>( data_ ) ];
1395
234
  }
1396
235
 
1397
- template<class A> result_type eval( A & a ) const
236
+ template<class A2> bool operator()( type<bool>, logical_or const & /*f*/, A2 & a2 ) const
1398
237
  {
1399
- return l_( type<result_type>(), f_, a, 0 );
238
+ static_assert( sizeof...(A) == 2, "operator|| must have two arguments" );
239
+ return a2[ std::get<0>( data_ ) ] || a2[ std::get<1>( data_ ) ];
1400
240
  }
1401
241
 
242
+ //
243
+
1402
244
  template<class V> void accept( V & v ) const
1403
245
  {
1404
- #if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( BOOST_BORLANDC )
1405
- using boost::visit_each;
1406
- #endif
1407
-
1408
- BOOST_BIND_VISIT_EACH( v, f_, 0 );
1409
- l_.accept( v );
246
+ _bi::tuple_for_each( accept_lambda<V>( v ), data_ );
1410
247
  }
1411
248
 
1412
- bool compare( this_type const & rhs ) const
249
+ bool operator==( list const & rhs ) const
1413
250
  {
1414
- return ref_compare( f_, rhs.f_, 0 ) && l_ == rhs.l_;
251
+ return _bi::tuple_for_each( equal_lambda(), data_, rhs.data_ ).result;
1415
252
  }
1416
253
  };
1417
254
 
1418
- #elif !defined( BOOST_NO_VOID_RETURNS )
255
+ // bind_t
1419
256
 
1420
- template<class R, class F, class L> class bind_t
257
+ template<class... A> class rrlist
1421
258
  {
1422
- public:
259
+ private:
1423
260
 
1424
- typedef bind_t this_type;
261
+ using args_type = std::tuple<A...>;
1425
262
 
1426
- bind_t(F f, L const & l): f_(f), l_(l) {}
263
+ using data_type = std::tuple<A&...>;
264
+ data_type data_;
1427
265
 
1428
- #define BOOST_BIND_RETURN return
1429
- #include <boost/bind/bind_template.hpp>
1430
- #undef BOOST_BIND_RETURN
266
+ template<class...> friend class rrlist;
1431
267
 
1432
- };
268
+ public:
1433
269
 
1434
- #else // no void returns
270
+ explicit rrlist( A&... a ): data_( a... ) {}
271
+ template<class... B> explicit rrlist( rrlist<B...> const& r ): data_( r.data_ ) {}
1435
272
 
1436
- template<class R> struct bind_t_generator
1437
- {
273
+ template<int I> typename std::tuple_element<I-1, args_type>::type&& operator[] ( boost::arg<I> ) const
274
+ {
275
+ return std::forward<typename std::tuple_element<I-1, args_type>::type>( std::get<I-1>( data_ ) );
276
+ }
1438
277
 
1439
- template<class F, class L> class implementation
1440
- {
1441
- public:
278
+ template<int I> typename std::tuple_element<I-1, args_type>::type&& operator[] ( boost::arg<I>(*)() ) const
279
+ {
280
+ return std::forward<typename std::tuple_element<I-1, args_type>::type>( std::get<I-1>( data_ ) );
281
+ }
1442
282
 
1443
- typedef implementation this_type;
283
+ template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1444
284
 
1445
- implementation(F f, L const & l): f_(f), l_(l) {}
285
+ template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1446
286
 
1447
- #define BOOST_BIND_RETURN return
1448
- #include <boost/bind/bind_template.hpp>
1449
- #undef BOOST_BIND_RETURN
287
+ template<class T> T & operator[] ( reference_wrapper<T> const & v ) const { return v.get(); }
1450
288
 
1451
- };
289
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] ( bind_t<R, F, L> & b ) const
290
+ {
291
+ rrlist<A&...> a2( *this );
292
+ return b.eval( a2 );
293
+ }
1452
294
 
295
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] ( bind_t<R, F, L> const & b ) const
296
+ {
297
+ rrlist<A&...> a2( *this );
298
+ return b.eval( a2 );
299
+ }
1453
300
  };
1454
301
 
1455
- template<> struct bind_t_generator<void>
1456
- {
1457
-
1458
- template<class F, class L> class implementation
302
+ template<class R, class F, class L> class bind_t
1459
303
  {
1460
304
  private:
1461
305
 
1462
- typedef void R;
306
+ F f_;
307
+ L l_;
1463
308
 
1464
309
  public:
1465
310
 
1466
- typedef implementation this_type;
1467
-
1468
- implementation(F f, L const & l): f_(f), l_(l) {}
1469
-
1470
- #define BOOST_BIND_RETURN
1471
- #include <boost/bind/bind_template.hpp>
1472
- #undef BOOST_BIND_RETURN
311
+ typedef typename result_traits<R, F>::type result_type;
312
+ typedef bind_t this_type;
1473
313
 
1474
- };
314
+ bind_t( F f, L const & l ): f_( std::move(f) ), l_( l ) {}
1475
315
 
1476
- };
316
+ //
1477
317
 
1478
- template<class R2, class F, class L> class bind_t: public bind_t_generator<R2>::BOOST_NESTED_TEMPLATE implementation<F, L>
1479
- {
1480
- public:
318
+ template<class... A> result_type operator()( A&&... a )
319
+ {
320
+ rrlist<A...> a2( a... );
321
+ return l_( type<result_type>(), f_, a2 );
322
+ }
1481
323
 
1482
- bind_t(F f, L const & l): bind_t_generator<R2>::BOOST_NESTED_TEMPLATE implementation<F, L>(f, l) {}
324
+ template<class... A> result_type operator()( A&&... a ) const
325
+ {
326
+ rrlist<A...> a2( a... );
327
+ return l_( type<result_type>(), f_, a2 );
328
+ }
1483
329
 
1484
- };
330
+ //
1485
331
 
1486
- #endif
332
+ template<class A> result_type eval( A & a )
333
+ {
334
+ return l_( type<result_type>(), f_, a );
335
+ }
1487
336
 
1488
- // function_equal
337
+ template<class A> result_type eval( A & a ) const
338
+ {
339
+ return l_( type<result_type>(), f_, a );
340
+ }
1489
341
 
1490
- #ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
342
+ template<class V> void accept( V & v ) const
343
+ {
344
+ using boost::visit_each;
345
+ visit_each( v, f_, 0 );
346
+ l_.accept( v );
347
+ }
1491
348
 
1492
- // put overloads in _bi, rely on ADL
349
+ bool compare( this_type const & rhs ) const
350
+ {
351
+ return ref_compare( f_, rhs.f_ ) && l_ == rhs.l_;
352
+ }
353
+ };
1493
354
 
1494
- # ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
355
+ // function_equal
1495
356
 
1496
357
  template<class R, class F, class L> bool function_equal( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b )
1497
358
  {
1498
359
  return a.compare(b);
1499
360
  }
1500
361
 
1501
- # else
1502
-
1503
- template<class R, class F, class L> bool function_equal_impl( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b, int )
1504
- {
1505
- return a.compare(b);
1506
- }
1507
-
1508
- # endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1509
-
1510
- #else // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
1511
-
1512
- // put overloads in boost
1513
-
1514
- } // namespace _bi
1515
-
1516
- # ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1517
-
1518
- template<class R, class F, class L> bool function_equal( _bi::bind_t<R, F, L> const & a, _bi::bind_t<R, F, L> const & b )
1519
- {
1520
- return a.compare(b);
1521
- }
1522
-
1523
- # else
1524
-
1525
- template<class R, class F, class L> bool function_equal_impl( _bi::bind_t<R, F, L> const & a, _bi::bind_t<R, F, L> const & b, int )
1526
- {
1527
- return a.compare(b);
1528
- }
1529
-
1530
- # endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1531
-
1532
- namespace _bi
1533
- {
1534
-
1535
- #endif // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
1536
-
1537
362
  // add_value
1538
363
 
1539
- #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || (__SUNPRO_CC >= 0x530)
1540
-
1541
- #if defined( BOOST_BORLANDC ) && BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x582) )
1542
-
1543
- template<class T> struct add_value
1544
- {
1545
- typedef _bi::value<T> type;
1546
- };
1547
-
1548
- #else
1549
-
1550
364
  template< class T, int I > struct add_value_2
1551
365
  {
1552
366
  typedef boost::arg<I> type;
@@ -1562,8 +376,6 @@ template<class T> struct add_value
1562
376
  typedef typename add_value_2< T, boost::is_placeholder< T >::value >::type type;
1563
377
  };
1564
378
 
1565
- #endif
1566
-
1567
379
  template<class T> struct add_value< value<T> >
1568
380
  {
1569
381
  typedef _bi::value<T> type;
@@ -1589,135 +401,11 @@ template<class R, class F, class L> struct add_value< bind_t<R, F, L> >
1589
401
  typedef bind_t<R, F, L> type;
1590
402
  };
1591
403
 
1592
- #else
1593
-
1594
- template<int I> struct _avt_0;
1595
-
1596
- template<> struct _avt_0<1>
1597
- {
1598
- template<class T> struct inner
1599
- {
1600
- typedef T type;
1601
- };
1602
- };
1603
-
1604
- template<> struct _avt_0<2>
1605
- {
1606
- template<class T> struct inner
1607
- {
1608
- typedef value<T> type;
1609
- };
1610
- };
1611
-
1612
- typedef char (&_avt_r1) [1];
1613
- typedef char (&_avt_r2) [2];
1614
-
1615
- template<class T> _avt_r1 _avt_f(value<T>);
1616
- template<class T> _avt_r1 _avt_f(reference_wrapper<T>);
1617
- template<int I> _avt_r1 _avt_f(arg<I>);
1618
- template<int I> _avt_r1 _avt_f(arg<I> (*) ());
1619
- template<class R, class F, class L> _avt_r1 _avt_f(bind_t<R, F, L>);
1620
-
1621
- _avt_r2 _avt_f(...);
1622
-
1623
- template<class T> struct add_value
1624
- {
1625
- static T t();
1626
- typedef typename _avt_0<sizeof(_avt_f(t()))>::template inner<T>::type type;
1627
- };
1628
-
1629
- #endif
1630
-
1631
- // list_av_N
1632
-
1633
- template<class A1> struct list_av_1
1634
- {
1635
- typedef typename add_value<A1>::type B1;
1636
- typedef list1<B1> type;
1637
- };
1638
-
1639
- template<class A1, class A2> struct list_av_2
1640
- {
1641
- typedef typename add_value<A1>::type B1;
1642
- typedef typename add_value<A2>::type B2;
1643
- typedef list2<B1, B2> type;
1644
- };
1645
-
1646
- template<class A1, class A2, class A3> struct list_av_3
1647
- {
1648
- typedef typename add_value<A1>::type B1;
1649
- typedef typename add_value<A2>::type B2;
1650
- typedef typename add_value<A3>::type B3;
1651
- typedef list3<B1, B2, B3> type;
1652
- };
1653
-
1654
- template<class A1, class A2, class A3, class A4> struct list_av_4
1655
- {
1656
- typedef typename add_value<A1>::type B1;
1657
- typedef typename add_value<A2>::type B2;
1658
- typedef typename add_value<A3>::type B3;
1659
- typedef typename add_value<A4>::type B4;
1660
- typedef list4<B1, B2, B3, B4> type;
1661
- };
1662
-
1663
- template<class A1, class A2, class A3, class A4, class A5> struct list_av_5
1664
- {
1665
- typedef typename add_value<A1>::type B1;
1666
- typedef typename add_value<A2>::type B2;
1667
- typedef typename add_value<A3>::type B3;
1668
- typedef typename add_value<A4>::type B4;
1669
- typedef typename add_value<A5>::type B5;
1670
- typedef list5<B1, B2, B3, B4, B5> type;
1671
- };
1672
-
1673
- template<class A1, class A2, class A3, class A4, class A5, class A6> struct list_av_6
1674
- {
1675
- typedef typename add_value<A1>::type B1;
1676
- typedef typename add_value<A2>::type B2;
1677
- typedef typename add_value<A3>::type B3;
1678
- typedef typename add_value<A4>::type B4;
1679
- typedef typename add_value<A5>::type B5;
1680
- typedef typename add_value<A6>::type B6;
1681
- typedef list6<B1, B2, B3, B4, B5, B6> type;
1682
- };
1683
-
1684
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct list_av_7
1685
- {
1686
- typedef typename add_value<A1>::type B1;
1687
- typedef typename add_value<A2>::type B2;
1688
- typedef typename add_value<A3>::type B3;
1689
- typedef typename add_value<A4>::type B4;
1690
- typedef typename add_value<A5>::type B5;
1691
- typedef typename add_value<A6>::type B6;
1692
- typedef typename add_value<A7>::type B7;
1693
- typedef list7<B1, B2, B3, B4, B5, B6, B7> type;
1694
- };
1695
-
1696
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct list_av_8
1697
- {
1698
- typedef typename add_value<A1>::type B1;
1699
- typedef typename add_value<A2>::type B2;
1700
- typedef typename add_value<A3>::type B3;
1701
- typedef typename add_value<A4>::type B4;
1702
- typedef typename add_value<A5>::type B5;
1703
- typedef typename add_value<A6>::type B6;
1704
- typedef typename add_value<A7>::type B7;
1705
- typedef typename add_value<A8>::type B8;
1706
- typedef list8<B1, B2, B3, B4, B5, B6, B7, B8> type;
1707
- };
404
+ // list_av
1708
405
 
1709
- template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct list_av_9
406
+ template<class... A> struct list_av
1710
407
  {
1711
- typedef typename add_value<A1>::type B1;
1712
- typedef typename add_value<A2>::type B2;
1713
- typedef typename add_value<A3>::type B3;
1714
- typedef typename add_value<A4>::type B4;
1715
- typedef typename add_value<A5>::type B5;
1716
- typedef typename add_value<A6>::type B6;
1717
- typedef typename add_value<A7>::type B7;
1718
- typedef typename add_value<A8>::type B8;
1719
- typedef typename add_value<A9>::type B9;
1720
- typedef list9<B1, B2, B3, B4, B5, B6, B7, B8, B9> type;
408
+ typedef list< typename add_value<A>::type... > type;
1721
409
  };
1722
410
 
1723
411
  // operator!
@@ -1728,10 +416,10 @@ struct logical_not
1728
416
  };
1729
417
 
1730
418
  template<class R, class F, class L>
1731
- bind_t< bool, logical_not, list1< bind_t<R, F, L> > >
419
+ bind_t< bool, logical_not, list< bind_t<R, F, L> > >
1732
420
  operator! (bind_t<R, F, L> const & f)
1733
421
  {
1734
- typedef list1< bind_t<R, F, L> > list_type;
422
+ typedef list< bind_t<R, F, L> > list_type;
1735
423
  return bind_t<bool, logical_not, list_type> ( logical_not(), list_type(f) );
1736
424
  }
1737
425
 
@@ -1745,11 +433,11 @@ struct name \
1745
433
  }; \
1746
434
  \
1747
435
  template<class R, class F, class L, class A2> \
1748
- bind_t< bool, name, list2< bind_t<R, F, L>, typename add_value<A2>::type > > \
436
+ bind_t< bool, name, list< bind_t<R, F, L>, typename add_value<A2>::type > > \
1749
437
  operator op (bind_t<R, F, L> const & f, A2 a2) \
1750
438
  { \
1751
439
  typedef typename add_value<A2>::type B2; \
1752
- typedef list2< bind_t<R, F, L>, B2> list_type; \
440
+ typedef list< bind_t<R, F, L>, B2> list_type; \
1753
441
  return bind_t<bool, name, list_type> ( name(), list_type(f, a2) ); \
1754
442
  }
1755
443
 
@@ -1767,36 +455,12 @@ BOOST_BIND_OPERATOR( ||, logical_or )
1767
455
 
1768
456
  #undef BOOST_BIND_OPERATOR
1769
457
 
1770
- #if defined(__GNUC__) && BOOST_WORKAROUND(__GNUC__, < 3)
1771
-
1772
- // resolve ambiguity with rel_ops
1773
-
1774
- #define BOOST_BIND_OPERATOR( op, name ) \
1775
- \
1776
- template<class R, class F, class L> \
1777
- bind_t< bool, name, list2< bind_t<R, F, L>, bind_t<R, F, L> > > \
1778
- operator op (bind_t<R, F, L> const & f, bind_t<R, F, L> const & g) \
1779
- { \
1780
- typedef list2< bind_t<R, F, L>, bind_t<R, F, L> > list_type; \
1781
- return bind_t<bool, name, list_type> ( name(), list_type(f, g) ); \
1782
- }
1783
-
1784
- BOOST_BIND_OPERATOR( !=, not_equal )
1785
- BOOST_BIND_OPERATOR( <=, less_equal )
1786
- BOOST_BIND_OPERATOR( >, greater )
1787
- BOOST_BIND_OPERATOR( >=, greater_equal )
1788
-
1789
- #endif
1790
-
1791
- // visit_each, ADL
1792
-
1793
- #if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( BOOST_BORLANDC ) \
1794
- && !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3)
458
+ // visit_each
1795
459
 
1796
460
  template<class V, class T> void visit_each( V & v, value<T> const & t, int )
1797
461
  {
1798
462
  using boost::visit_each;
1799
- BOOST_BIND_VISIT_EACH( v, t.get(), 0 );
463
+ visit_each( v, t.get(), 0 );
1800
464
  }
1801
465
 
1802
466
  template<class V, class R, class F, class L> void visit_each( V & v, bind_t<R, F, L> const & t, int )
@@ -1804,27 +468,8 @@ template<class V, class R, class F, class L> void visit_each( V & v, bind_t<R, F
1804
468
  t.accept( v );
1805
469
  }
1806
470
 
1807
- #endif
1808
-
1809
471
  } // namespace _bi
1810
472
 
1811
- // visit_each, no ADL
1812
-
1813
- #if defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) || defined( BOOST_BORLANDC ) \
1814
- || (defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3)
1815
-
1816
- template<class V, class T> void visit_each( V & v, _bi::value<T> const & t, int )
1817
- {
1818
- BOOST_BIND_VISIT_EACH( v, t.get(), 0 );
1819
- }
1820
-
1821
- template<class V, class R, class F, class L> void visit_each( V & v, _bi::bind_t<R, F, L> const & t, int )
1822
- {
1823
- t.accept( v );
1824
- }
1825
-
1826
- #endif
1827
-
1828
473
  // is_bind_expression
1829
474
 
1830
475
  template< class T > struct is_bind_expression
@@ -1832,15 +477,11 @@ template< class T > struct is_bind_expression
1832
477
  enum _vt { value = 0 };
1833
478
  };
1834
479
 
1835
- #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1836
-
1837
480
  template< class R, class F, class L > struct is_bind_expression< _bi::bind_t< R, F, L > >
1838
481
  {
1839
482
  enum _vt { value = 1 };
1840
483
  };
1841
484
 
1842
- #endif
1843
-
1844
485
  // bind
1845
486
 
1846
487
  #ifndef BOOST_BIND
@@ -1849,266 +490,135 @@ template< class R, class F, class L > struct is_bind_expression< _bi::bind_t< R,
1849
490
 
1850
491
  // generic function objects
1851
492
 
1852
- template<class R, class F>
1853
- _bi::bind_t<R, F, _bi::list0>
1854
- BOOST_BIND(F f)
1855
- {
1856
- typedef _bi::list0 list_type;
1857
- return _bi::bind_t<R, F, list_type> (f, list_type());
1858
- }
1859
-
1860
- template<class R, class F, class A1>
1861
- _bi::bind_t<R, F, typename _bi::list_av_1<A1>::type>
1862
- BOOST_BIND(F f, A1 a1)
1863
- {
1864
- typedef typename _bi::list_av_1<A1>::type list_type;
1865
- return _bi::bind_t<R, F, list_type> (f, list_type(a1));
1866
- }
1867
-
1868
- template<class R, class F, class A1, class A2>
1869
- _bi::bind_t<R, F, typename _bi::list_av_2<A1, A2>::type>
1870
- BOOST_BIND(F f, A1 a1, A2 a2)
1871
- {
1872
- typedef typename _bi::list_av_2<A1, A2>::type list_type;
1873
- return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
1874
- }
1875
-
1876
- template<class R, class F, class A1, class A2, class A3>
1877
- _bi::bind_t<R, F, typename _bi::list_av_3<A1, A2, A3>::type>
1878
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3)
1879
- {
1880
- typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
1881
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
1882
- }
1883
-
1884
- template<class R, class F, class A1, class A2, class A3, class A4>
1885
- _bi::bind_t<R, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
1886
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4)
1887
- {
1888
- typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
1889
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
1890
- }
1891
-
1892
- template<class R, class F, class A1, class A2, class A3, class A4, class A5>
1893
- _bi::bind_t<R, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
1894
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
1895
- {
1896
- typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
1897
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
1898
- }
1899
-
1900
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6>
1901
- _bi::bind_t<R, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
1902
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
1903
- {
1904
- typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
1905
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
1906
- }
1907
-
1908
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
1909
- _bi::bind_t<R, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
1910
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
1911
- {
1912
- typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
1913
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
1914
- }
493
+ #if !BOOST_WORKAROUND(__GNUC__, < 6)
1915
494
 
1916
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
1917
- _bi::bind_t<R, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
1918
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
495
+ template<class R, class F, class... A>
496
+ _bi::bind_t<R, F, typename _bi::list_av<A...>::type>
497
+ BOOST_BIND( F f, A... a )
1919
498
  {
1920
- typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
1921
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
499
+ typedef typename _bi::list_av<A...>::type list_type;
500
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a... ) );
1922
501
  }
1923
502
 
1924
- template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
1925
- _bi::bind_t<R, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
1926
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
1927
- {
1928
- typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
1929
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
1930
- }
503
+ #else
1931
504
 
1932
- // generic function objects, alternative syntax
505
+ // g++ 4.x (and some 5.x) consider boost::bind<void>( &X::f )
506
+ // ambiguous if the variadic form above is used
1933
507
 
1934
508
  template<class R, class F>
1935
- _bi::bind_t<R, F, _bi::list0>
1936
- BOOST_BIND(boost::type<R>, F f)
509
+ _bi::bind_t<R, F, typename _bi::list_av<>::type>
510
+ BOOST_BIND( F f )
1937
511
  {
1938
- typedef _bi::list0 list_type;
1939
- return _bi::bind_t<R, F, list_type> (f, list_type());
512
+ typedef typename _bi::list_av<>::type list_type;
513
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type() );
1940
514
  }
1941
515
 
1942
516
  template<class R, class F, class A1>
1943
- _bi::bind_t<R, F, typename _bi::list_av_1<A1>::type>
1944
- BOOST_BIND(boost::type<R>, F f, A1 a1)
517
+ _bi::bind_t<R, F, typename _bi::list_av<A1>::type>
518
+ BOOST_BIND( F f, A1 a1 )
1945
519
  {
1946
- typedef typename _bi::list_av_1<A1>::type list_type;
1947
- return _bi::bind_t<R, F, list_type> (f, list_type(a1));
520
+ typedef typename _bi::list_av<A1>::type list_type;
521
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1 ) );
1948
522
  }
1949
523
 
1950
524
  template<class R, class F, class A1, class A2>
1951
- _bi::bind_t<R, F, typename _bi::list_av_2<A1, A2>::type>
1952
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2)
525
+ _bi::bind_t<R, F, typename _bi::list_av<A1, A2>::type>
526
+ BOOST_BIND( F f, A1 a1, A2 a2 )
1953
527
  {
1954
- typedef typename _bi::list_av_2<A1, A2>::type list_type;
1955
- return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
528
+ typedef typename _bi::list_av<A1, A2>::type list_type;
529
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2 ) );
1956
530
  }
1957
531
 
1958
532
  template<class R, class F, class A1, class A2, class A3>
1959
- _bi::bind_t<R, F, typename _bi::list_av_3<A1, A2, A3>::type>
1960
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3)
533
+ _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3>::type>
534
+ BOOST_BIND( F f, A1 a1, A2 a2, A3 a3 )
1961
535
  {
1962
- typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
1963
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
536
+ typedef typename _bi::list_av<A1, A2, A3>::type list_type;
537
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3 ) );
1964
538
  }
1965
539
 
1966
540
  template<class R, class F, class A1, class A2, class A3, class A4>
1967
- _bi::bind_t<R, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
1968
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4)
541
+ _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4>::type>
542
+ BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4 )
1969
543
  {
1970
- typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
1971
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
544
+ typedef typename _bi::list_av<A1, A2, A3, A4>::type list_type;
545
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4 ) );
1972
546
  }
1973
547
 
1974
548
  template<class R, class F, class A1, class A2, class A3, class A4, class A5>
1975
- _bi::bind_t<R, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
1976
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
549
+ _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4, A5>::type>
550
+ BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 )
1977
551
  {
1978
- typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
1979
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
552
+ typedef typename _bi::list_av<A1, A2, A3, A4, A5>::type list_type;
553
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4, a5 ) );
1980
554
  }
1981
555
 
1982
556
  template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6>
1983
- _bi::bind_t<R, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
1984
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
557
+ _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4, A5, A6>::type>
558
+ BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 )
1985
559
  {
1986
- typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
1987
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
560
+ typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6>::type list_type;
561
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4, a5, a6 ) );
1988
562
  }
1989
563
 
1990
564
  template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
1991
- _bi::bind_t<R, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
1992
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
565
+ _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7>::type>
566
+ BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 )
1993
567
  {
1994
- typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
1995
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
568
+ typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7>::type list_type;
569
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4, a5, a6, a7 ) );
1996
570
  }
1997
571
 
1998
572
  template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
1999
- _bi::bind_t<R, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
2000
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
573
+ _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8>::type>
574
+ BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 )
2001
575
  {
2002
- typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
2003
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
576
+ typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
577
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4, a5, a6, a7, a8 ) );
2004
578
  }
2005
579
 
2006
580
  template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
2007
- _bi::bind_t<R, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
2008
- BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
2009
- {
2010
- typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
2011
- return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
2012
- }
2013
-
2014
- #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
2015
-
2016
- // adaptable function objects
2017
-
2018
- template<class F>
2019
- _bi::bind_t<_bi::unspecified, F, _bi::list0>
2020
- BOOST_BIND(F f)
581
+ _bi::bind_t<R, F, typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
582
+ BOOST_BIND( F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 )
2021
583
  {
2022
- typedef _bi::list0 list_type;
2023
- return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type());
584
+ typedef typename _bi::list_av<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
585
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) );
2024
586
  }
2025
587
 
2026
- template<class F, class A1>
2027
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_1<A1>::type>
2028
- BOOST_BIND(F f, A1 a1)
2029
- {
2030
- typedef typename _bi::list_av_1<A1>::type list_type;
2031
- return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1));
2032
- }
2033
-
2034
- template<class F, class A1, class A2>
2035
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_2<A1, A2>::type>
2036
- BOOST_BIND(F f, A1 a1, A2 a2)
2037
- {
2038
- typedef typename _bi::list_av_2<A1, A2>::type list_type;
2039
- return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1, a2));
2040
- }
2041
-
2042
- template<class F, class A1, class A2, class A3>
2043
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_3<A1, A2, A3>::type>
2044
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3)
2045
- {
2046
- typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
2047
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3));
2048
- }
2049
-
2050
- template<class F, class A1, class A2, class A3, class A4>
2051
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
2052
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4)
2053
- {
2054
- typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
2055
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4));
2056
- }
2057
-
2058
- template<class F, class A1, class A2, class A3, class A4, class A5>
2059
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
2060
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
2061
- {
2062
- typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
2063
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
2064
- }
588
+ #endif
2065
589
 
2066
- template<class F, class A1, class A2, class A3, class A4, class A5, class A6>
2067
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
2068
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
2069
- {
2070
- typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
2071
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
2072
- }
590
+ // generic function objects, alternative syntax
2073
591
 
2074
- template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
2075
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
2076
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
592
+ template<class R, class F, class... A>
593
+ _bi::bind_t<R, F, typename _bi::list_av<A...>::type>
594
+ BOOST_BIND( boost::type<R>, F f, A... a )
2077
595
  {
2078
- typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
2079
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
596
+ typedef typename _bi::list_av<A...>::type list_type;
597
+ return _bi::bind_t<R, F, list_type>( std::move(f), list_type( a... ) );
2080
598
  }
2081
599
 
2082
- template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
2083
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
2084
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
2085
- {
2086
- typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
2087
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
2088
- }
600
+ // adaptable function objects
2089
601
 
2090
- template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
2091
- _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
2092
- BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
602
+ template<class F, class... A>
603
+ _bi::bind_t<_bi::unspecified, F, typename _bi::list_av<A...>::type>
604
+ BOOST_BIND( F f, A... a )
2093
605
  {
2094
- typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
2095
- return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
606
+ typedef typename _bi::list_av<A...>::type list_type;
607
+ return _bi::bind_t<_bi::unspecified, F, list_type>( std::move(f), list_type( a... ) );
2096
608
  }
2097
609
 
2098
- #endif // !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
2099
-
2100
610
  // function pointers
2101
611
 
2102
612
  #define BOOST_BIND_CC
2103
613
  #define BOOST_BIND_ST
2104
614
  #define BOOST_BIND_NOEXCEPT
2105
615
 
2106
- #include <boost/bind/bind_cc.hpp>
616
+ #include <boost/bind/detail/bind_cc.hpp>
2107
617
 
2108
618
  # if defined( __cpp_noexcept_function_type ) || defined( _NOEXCEPT_TYPES_SUPPORTED )
2109
619
  # undef BOOST_BIND_NOEXCEPT
2110
620
  # define BOOST_BIND_NOEXCEPT noexcept
2111
- # include <boost/bind/bind_cc.hpp>
621
+ # include <boost/bind/detail/bind_cc.hpp>
2112
622
  # endif
2113
623
 
2114
624
  #undef BOOST_BIND_CC
@@ -2121,7 +631,7 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl
2121
631
  #define BOOST_BIND_ST
2122
632
  #define BOOST_BIND_NOEXCEPT
2123
633
 
2124
- #include <boost/bind/bind_cc.hpp>
634
+ #include <boost/bind/detail/bind_cc.hpp>
2125
635
 
2126
636
  #undef BOOST_BIND_CC
2127
637
  #undef BOOST_BIND_ST
@@ -2135,7 +645,7 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl
2135
645
  #define BOOST_BIND_ST
2136
646
  #define BOOST_BIND_NOEXCEPT
2137
647
 
2138
- #include <boost/bind/bind_cc.hpp>
648
+ #include <boost/bind/detail/bind_cc.hpp>
2139
649
 
2140
650
  #undef BOOST_BIND_CC
2141
651
  #undef BOOST_BIND_ST
@@ -2149,7 +659,7 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl
2149
659
  #define BOOST_BIND_CC
2150
660
  #define BOOST_BIND_NOEXCEPT
2151
661
 
2152
- #include <boost/bind/bind_cc.hpp>
662
+ #include <boost/bind/detail/bind_cc.hpp>
2153
663
 
2154
664
  #undef BOOST_BIND_ST
2155
665
  #undef BOOST_BIND_CC
@@ -2163,14 +673,14 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl
2163
673
  #define BOOST_BIND_MF_CC
2164
674
  #define BOOST_BIND_MF_NOEXCEPT
2165
675
 
2166
- #include <boost/bind/bind_mf_cc.hpp>
2167
- #include <boost/bind/bind_mf2_cc.hpp>
676
+ #include <boost/bind/detail/bind_mf_cc.hpp>
677
+ #include <boost/bind/detail/bind_mf2_cc.hpp>
2168
678
 
2169
679
  # if defined( __cpp_noexcept_function_type ) || defined( _NOEXCEPT_TYPES_SUPPORTED )
2170
680
  # undef BOOST_BIND_MF_NOEXCEPT
2171
681
  # define BOOST_BIND_MF_NOEXCEPT noexcept
2172
- # include <boost/bind/bind_mf_cc.hpp>
2173
- # include <boost/bind/bind_mf2_cc.hpp>
682
+ # include <boost/bind/detail/bind_mf_cc.hpp>
683
+ # include <boost/bind/detail/bind_mf2_cc.hpp>
2174
684
  # endif
2175
685
 
2176
686
  #undef BOOST_BIND_MF_NAME
@@ -2183,8 +693,8 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl
2183
693
  #define BOOST_BIND_MF_CC __cdecl
2184
694
  #define BOOST_BIND_MF_NOEXCEPT
2185
695
 
2186
- #include <boost/bind/bind_mf_cc.hpp>
2187
- #include <boost/bind/bind_mf2_cc.hpp>
696
+ #include <boost/bind/detail/bind_mf_cc.hpp>
697
+ #include <boost/bind/detail/bind_mf2_cc.hpp>
2188
698
 
2189
699
  #undef BOOST_BIND_MF_NAME
2190
700
  #undef BOOST_BIND_MF_CC
@@ -2198,8 +708,8 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl
2198
708
  #define BOOST_BIND_MF_CC __stdcall
2199
709
  #define BOOST_BIND_MF_NOEXCEPT
2200
710
 
2201
- #include <boost/bind/bind_mf_cc.hpp>
2202
- #include <boost/bind/bind_mf2_cc.hpp>
711
+ #include <boost/bind/detail/bind_mf_cc.hpp>
712
+ #include <boost/bind/detail/bind_mf2_cc.hpp>
2203
713
 
2204
714
  #undef BOOST_BIND_MF_NAME
2205
715
  #undef BOOST_BIND_MF_CC
@@ -2213,8 +723,8 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl
2213
723
  #define BOOST_BIND_MF_CC __fastcall
2214
724
  #define BOOST_BIND_MF_NOEXCEPT
2215
725
 
2216
- #include <boost/bind/bind_mf_cc.hpp>
2217
- #include <boost/bind/bind_mf2_cc.hpp>
726
+ #include <boost/bind/detail/bind_mf_cc.hpp>
727
+ #include <boost/bind/detail/bind_mf2_cc.hpp>
2218
728
 
2219
729
  #undef BOOST_BIND_MF_NAME
2220
730
  #undef BOOST_BIND_MF_CC
@@ -2224,20 +734,6 @@ template<class F, class A1, class A2, class A3, class A4, class A5, class A6, cl
2224
734
 
2225
735
  // data member pointers
2226
736
 
2227
- #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
2228
- || ( defined(BOOST_BORLANDC) && BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT( 0x620 ) ) )
2229
-
2230
- template<class R, class T, class A1>
2231
- _bi::bind_t< R, _mfi::dm<R, T>, typename _bi::list_av_1<A1>::type >
2232
- BOOST_BIND(R T::*f, A1 a1)
2233
- {
2234
- typedef _mfi::dm<R, T> F;
2235
- typedef typename _bi::list_av_1<A1>::type list_type;
2236
- return _bi::bind_t<R, F, list_type>( F(f), list_type(a1) );
2237
- }
2238
-
2239
- #else
2240
-
2241
737
  namespace _bi
2242
738
  {
2243
739
 
@@ -2265,8 +761,6 @@ template< class R, class T > struct add_cref< R (T::*) (), 1 >
2265
761
  typedef void type;
2266
762
  };
2267
763
 
2268
- #if !defined(__IBMCPP__) || __IBMCPP_FUNC_CV_TMPL_ARG_DEDUCTION
2269
-
2270
764
  template< class R, class T > struct add_cref< R (T::*) () const, 1 >
2271
765
  {
2272
766
  typedef void type;
@@ -2281,8 +775,6 @@ template< class R, class T > struct add_cref< R (T::*) () const noexcept, 1 >
2281
775
 
2282
776
  #endif // __cpp_noexcept_function_type
2283
777
 
2284
- #endif // __IBMCPP__
2285
-
2286
778
  template<class R> struct isref
2287
779
  {
2288
780
  enum value_type { value = 0 };
@@ -2316,19 +808,17 @@ template< class A1, class M, class T >
2316
808
  _bi::bind_t<
2317
809
  typename _bi::dm_result< M T::*, A1 >::type,
2318
810
  _mfi::dm<M, T>,
2319
- typename _bi::list_av_1<A1>::type
811
+ typename _bi::list_av<A1>::type
2320
812
  >
2321
813
 
2322
814
  BOOST_BIND( M T::*f, A1 a1 )
2323
815
  {
2324
816
  typedef typename _bi::dm_result< M T::*, A1 >::type result_type;
2325
817
  typedef _mfi::dm<M, T> F;
2326
- typedef typename _bi::list_av_1<A1>::type list_type;
818
+ typedef typename _bi::list_av<A1>::type list_type;
2327
819
  return _bi::bind_t< result_type, F, list_type >( F( f ), list_type( a1 ) );
2328
820
  }
2329
821
 
2330
- #endif
2331
-
2332
822
  } // namespace boost
2333
823
 
2334
824
  #ifndef BOOST_BIND_NO_PLACEHOLDERS