passenger 5.3.3 → 5.3.4

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 (1070) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +8 -0
  3. data/build/support/cxx_dependency_map.rb +151 -83
  4. data/dev/configkit-schemas/index.json +3 -3
  5. data/src/agent/Core/AdminPanelConnector.h +5 -3
  6. data/src/agent/Core/ApplicationPool/Common.h +1 -2
  7. data/src/agent/Core/ApplicationPool/Context.h +1 -2
  8. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
  9. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
  10. data/src/agent/Core/Config.h +1 -1
  11. data/src/agent/Core/Controller.h +2 -1
  12. data/src/agent/Core/Controller/Config.h +6 -5
  13. data/src/agent/Core/Controller/Hooks.cpp +11 -0
  14. data/src/agent/Core/Controller/SendRequest.cpp +7 -7
  15. data/src/agent/Core/CoreMain.cpp +0 -2
  16. data/src/agent/Core/SpawningKit/Context.h +1 -3
  17. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +2 -2
  18. data/src/agent/Core/SpawningKit/Handshake/Perform.h +2 -2
  19. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +17 -38
  20. data/src/agent/Core/SpawningKit/PipeWatcher.h +5 -3
  21. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +13 -5
  22. data/src/agent/Shared/ApiServerUtils.h +2 -2
  23. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +33 -18
  24. data/src/agent/Watchdog/Config.h +1 -1
  25. data/src/agent/Watchdog/WatchdogMain.cpp +20 -20
  26. data/src/apache2_module/Config.cpp +7 -6
  27. data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
  28. data/src/cxx_supportlib/Constants.h +1 -1
  29. data/src/cxx_supportlib/Exceptions.h +0 -1
  30. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +3 -2
  31. data/src/cxx_supportlib/ResourceLocator.h +3 -21
  32. data/src/cxx_supportlib/SafeLibev.h +6 -6
  33. data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
  34. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +3 -3
  35. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
  36. data/src/cxx_supportlib/ServerKit/HttpServer.h +27 -15
  37. data/src/cxx_supportlib/ServerKit/Server.h +2 -2
  38. data/src/cxx_supportlib/SystemTools/README.md +1 -0
  39. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +222 -0
  40. data/src/cxx_supportlib/SystemTools/UserDatabase.h +151 -0
  41. data/src/cxx_supportlib/Utils.cpp +1 -113
  42. data/src/cxx_supportlib/Utils.h +1 -29
  43. data/src/cxx_supportlib/Utils/MessagePassing.h +3 -3
  44. data/src/cxx_supportlib/WatchdogLauncher.h +1 -2
  45. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +6 -2
  46. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +1 -1
  47. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/util.hpp +3 -2
  48. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +31 -1
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +133 -0
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +151 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +149 -22
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +140 -49
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +145 -35
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +75 -41
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +139 -49
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +98 -45
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +42 -49
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +45 -38
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +349 -109
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +959 -108
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +198 -54
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +424 -284
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +116 -47
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +99 -16
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +4 -1
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +235 -49
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +613 -0
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +1139 -1216
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +27 -14
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +26 -6
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +27 -14
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +61 -21
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +462 -226
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +7 -7
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +94 -64
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +20 -18
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +109 -0
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +1 -1
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +1 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +404 -77
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +212 -51
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +2 -2
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +68 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +8 -6
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +94 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +114 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +151 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +398 -13
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +287 -165
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +33 -0
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +15 -1
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +65 -14
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +5 -1
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +17 -8
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +17 -8
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +27 -15
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +41 -17
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +86 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{function.hpp → functional.hpp} +10 -10
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +3 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +3 -1
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +3 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +3 -1
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +54 -0
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +158 -3
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +2 -2
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +2 -2
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +90 -9
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +117 -39
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +97 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +6 -6
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +24 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +17 -4
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +34 -18
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +17 -4
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +152 -51
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +80 -27
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +19 -6
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +93 -23
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +76 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +13 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +11 -1
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +27 -13
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +7 -6
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +43 -10
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +54 -30
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/{task_io_service.ipp → scheduler.ipp} +167 -70
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +17 -4
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +46 -26
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +36 -30
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +39 -30
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +43 -21
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +129 -26
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +181 -0
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +136 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +13 -13
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +15 -14
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +12 -5
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -51
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +241 -0
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +128 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +36 -14
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +2 -1
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +42 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +17 -5
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +3 -1
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +61 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +10 -9
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +29 -19
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +7 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +26 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +7 -1
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +3 -3
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +5 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +37 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +82 -0
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +5 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +10 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +86 -20
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +9 -7
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +10 -8
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +101 -20
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +14 -7
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +20 -8
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +13 -8
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +15 -8
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +25 -11
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +15 -8
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +99 -31
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +96 -35
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +92 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +2 -2
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +2 -2
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +7 -3
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +106 -0
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +25 -24
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +6 -92
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +136 -0
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +38 -22
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +30 -19
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service.hpp → scheduler.hpp} +57 -45
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_operation.hpp → scheduler_operation.hpp} +19 -17
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_thread_info.hpp → scheduler_thread_info.hpp} +10 -10
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +9 -1
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +37 -18
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +54 -34
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +9 -5
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +14 -13
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +9 -6
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +10 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +2 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -1
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +72 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +7 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +144 -0
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +10 -10
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +49 -0
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +9 -5
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +44 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +91 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +45 -15
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +29 -2
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +11 -5
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +2 -2
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +2 -2
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +29 -1
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +74 -18
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +8 -6
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +74 -0
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +110 -0
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +17 -1
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +413 -0
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +343 -0
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +172 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +22 -0
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +228 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +67 -0
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +878 -0
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +93 -0
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/redirect_error.hpp +296 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/redirect_error.hpp +69 -0
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +1 -1
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +1 -1
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +3 -2
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +1 -1
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +1 -1
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +1 -1
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +1 -1
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +4 -4
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +11 -73
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +4 -23
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +86 -15
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +92 -19
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +549 -119
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +79 -0
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +80 -0
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +109 -0
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +84 -0
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +388 -0
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +40 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +7 -32
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +347 -0
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +176 -0
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +79 -0
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +341 -379
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +173 -343
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +559 -206
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +30 -30
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +254 -72
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +1 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +12 -4
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +36 -0
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +75 -0
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +87 -0
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +129 -0
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +78 -0
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +855 -94
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +358 -449
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +165 -418
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +878 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +386 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +6 -743
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +20 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +79 -19
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +111 -23
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +164 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +136 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +104 -14
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +185 -0
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +131 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +50 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +5 -5
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +821 -71
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +23 -4
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +31 -99
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +313 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +2 -2
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +5 -10
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +16 -19
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +1 -1
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +28 -14
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +55 -47
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +28 -14
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +76 -44
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +28 -14
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +85 -33
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +2 -14
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +56 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +218 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +55 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +187 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +263 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +237 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +131 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +3 -90
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +48 -24
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +3 -3
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +1 -1
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +3 -3
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +48 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +1 -1
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +23 -21
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +1 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +3 -2
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +1 -1
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +128 -0
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +30 -2
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +138 -46
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +15 -15
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +646 -0
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +17 -24
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +326 -3
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +63 -44
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +109 -0
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +94 -64
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +328 -12
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +13 -6
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1148 -247
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +88 -56
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +736 -3
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +11 -11
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +41 -45
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +422 -3
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +32 -24
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +114 -48
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +85 -46
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +89 -18
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -4
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +33 -62
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +27 -23
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +10 -14
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +2 -8
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +22 -25
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +5 -4
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +40 -17
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +2 -2
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +4 -10
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -9
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +2 -8
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +27 -19
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -8
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -9
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +8 -12
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +86 -102
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +7 -13
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -13
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +90 -85
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +3 -9
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +4 -23
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +209 -175
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +88 -56
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +80 -0
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +131 -0
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +4 -19
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +234 -0
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +24 -0
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +35 -0
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +40 -0
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +20 -0
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +26 -0
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +199 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +27 -0
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +26 -0
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +70 -3
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +73 -0
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +17 -2
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +62 -20
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +22 -30
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +14 -10
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +15 -15
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +15 -15
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +346 -3
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +26 -20
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +333 -0
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +6 -6
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +344 -3
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +31 -37
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +328 -3
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +29 -37
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +321 -12
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +13 -6
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  468. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +11 -0
  469. data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +50 -1
  470. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +58 -0
  471. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +1 -0
  472. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +688 -220
  473. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +25 -21
  474. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +86 -0
  475. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +1 -18
  476. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +9 -10
  477. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +2 -1
  478. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +7 -8
  479. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +1 -36
  480. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +108 -34
  481. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations.hpp +28 -0
  482. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +35 -0
  483. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +107 -0
  484. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +189 -0
  485. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations.hpp +28 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +35 -0
  487. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +238 -0
  488. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +1111 -0
  489. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +840 -0
  490. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +1656 -0
  491. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +402 -0
  492. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +106 -0
  493. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +1301 -0
  494. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +142 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations.hpp +28 -0
  496. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +35 -0
  497. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +72 -0
  498. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +83 -0
  499. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_arm.hpp +67 -0
  500. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_ppc.hpp +42 -0
  501. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_x86.hpp +58 -0
  502. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +3 -3
  503. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_extend.hpp +105 -0
  504. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -1
  505. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +1 -1
  506. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +2 -0
  507. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +8 -9
  508. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +8 -7
  509. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +14 -16
  510. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +548 -126
  511. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +134 -0
  512. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +36 -44
  513. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +524 -96
  514. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +70 -0
  515. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +14 -16
  516. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +27 -59
  517. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +104 -57
  518. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +268 -340
  519. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +9 -9
  520. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +22 -24
  521. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +55 -80
  522. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +88 -46
  523. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +30 -103
  524. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/string_ops.hpp +61 -0
  525. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +42 -0
  526. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +46 -0
  527. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +42 -0
  528. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +42 -0
  529. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +47 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +43 -0
  531. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +43 -0
  532. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +46 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +43 -0
  534. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +43 -0
  535. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +37 -0
  536. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_cc.hpp +30 -30
  537. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +36 -36
  538. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +0 -10
  539. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +28 -30
  540. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +2 -4
  541. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +1 -1
  542. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +14 -8
  543. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_units.hpp +1 -1
  544. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +2 -4
  545. data/src/cxx_supportlib/vendor-modified/boost/chrono/process_cpu_clocks.hpp +2 -2
  546. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +0 -1
  547. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +9 -9
  548. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +7 -6
  549. data/src/cxx_supportlib/vendor-modified/boost/config.hpp +4 -4
  550. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +26 -4
  551. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +12 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +30 -2
  553. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +13 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +11 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +32 -2
  556. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/diab.hpp +26 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +11 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +33 -6
  559. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +11 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +8 -1
  561. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +11 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +11 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +28 -2
  564. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +17 -1
  565. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +8 -142
  566. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +14 -3
  567. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +16 -0
  568. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +37 -9
  569. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +19 -0
  570. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +169 -0
  571. data/src/cxx_supportlib/vendor-modified/boost/config/{posix_features.hpp → detail/posix_features.hpp} +0 -0
  572. data/src/cxx_supportlib/vendor-modified/boost/config/{select_compiler_config.hpp → detail/select_compiler_config.hpp} +15 -5
  573. data/src/cxx_supportlib/vendor-modified/boost/config/{select_platform_config.hpp → detail/select_platform_config.hpp} +8 -3
  574. data/src/cxx_supportlib/vendor-modified/boost/config/{select_stdlib_config.hpp → detail/select_stdlib_config.hpp} +5 -0
  575. data/src/cxx_supportlib/vendor-modified/boost/config/{suffix.hpp → detail/suffix.hpp} +27 -27
  576. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +26 -0
  577. data/src/cxx_supportlib/vendor-modified/boost/config/helper_macros.hpp +37 -0
  578. data/src/cxx_supportlib/vendor-modified/boost/config/platform/aix.hpp +1 -1
  579. data/src/cxx_supportlib/vendor-modified/boost/config/platform/beos.hpp +1 -1
  580. data/src/cxx_supportlib/vendor-modified/boost/config/platform/bsd.hpp +1 -1
  581. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cray.hpp +1 -1
  582. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +12 -1
  583. data/src/cxx_supportlib/vendor-modified/boost/config/platform/haiku.hpp +1 -1
  584. data/src/cxx_supportlib/vendor-modified/boost/config/platform/hpux.hpp +1 -1
  585. data/src/cxx_supportlib/vendor-modified/boost/config/platform/irix.hpp +1 -1
  586. data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +4 -3
  587. data/src/cxx_supportlib/vendor-modified/boost/config/platform/macos.hpp +1 -1
  588. data/src/cxx_supportlib/vendor-modified/boost/config/platform/qnxnto.hpp +1 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/config/platform/solaris.hpp +1 -1
  590. data/src/cxx_supportlib/vendor-modified/boost/config/platform/symbian.hpp +1 -1
  591. data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +155 -91
  592. data/src/cxx_supportlib/vendor-modified/boost/config/platform/zos.hpp +32 -0
  593. data/src/cxx_supportlib/vendor-modified/boost/config/pragma_message.hpp +31 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +21 -2
  595. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +2 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +20 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +35 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +2 -0
  599. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +3 -1
  600. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -0
  601. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +2 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +2 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +2 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +60 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +279 -0
  606. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +19 -19
  607. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +5 -5
  608. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +58 -58
  609. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +7 -28
  610. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +57 -57
  611. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +3 -3
  612. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +10 -10
  613. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
  614. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +18 -18
  615. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +122 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +8 -8
  617. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +7 -7
  618. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +1 -1
  619. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +49 -0
  620. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +258 -0
  621. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +119 -134
  622. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +15 -15
  623. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +55 -55
  624. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +714 -282
  625. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +55 -0
  626. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +47 -0
  627. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +2 -2
  628. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +30 -0
  629. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator_to_raw_pointer.hpp +4 -29
  630. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +9 -9
  631. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +2 -2
  632. data/src/cxx_supportlib/vendor-modified/boost/container/detail/min_max.hpp +2 -2
  633. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
  634. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +8 -8
  635. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +2 -2
  636. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +37 -35
  637. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +41 -41
  638. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +4 -4
  639. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +4 -4
  640. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +69 -16
  641. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair_key_mapped_of_value.hpp +55 -0
  642. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +2 -2
  643. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +7 -7
  644. data/src/cxx_supportlib/vendor-modified/boost/container/detail/singleton.hpp +2 -2
  645. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +1 -1
  646. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +180 -116
  647. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -2
  648. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +36 -0
  649. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -2
  650. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +2 -2
  651. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +8 -8
  652. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +0 -6
  653. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +874 -572
  654. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +497 -248
  655. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -42
  656. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +326 -246
  657. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +19 -19
  658. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +122 -78
  659. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +165 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -8
  661. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -8
  662. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -4
  663. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +6 -6
  664. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  665. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -4
  666. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +19 -19
  667. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +285 -110
  668. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +35 -53
  669. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +18 -19
  670. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +25 -25
  671. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +24 -9
  672. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +194 -142
  673. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -5
  674. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +5 -5
  675. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +395 -421
  676. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/float_functions.hpp +0 -0
  677. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/hash_float.hpp +4 -4
  678. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/limits.hpp +0 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/extensions.hpp +112 -16
  680. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash.hpp +195 -7
  681. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash_fwd.hpp +3 -3
  682. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +53 -44
  683. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +80 -2
  684. data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +1 -1
  685. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +233 -0
  686. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -2
  687. data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +26 -16
  688. data/src/cxx_supportlib/vendor-modified/boost/date_time/adjust_functors.hpp +20 -34
  689. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_local_time_adjustor.hpp +8 -5
  690. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -0
  691. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting.hpp +2 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_locales.hpp +7 -6
  693. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +6 -6
  694. data/src/cxx_supportlib/vendor-modified/boost/date_time/filetime_functions.hpp +8 -94
  695. data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +1 -8
  696. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +3 -3
  697. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +6 -4
  698. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +3 -3
  699. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +2 -2
  700. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +6 -6
  701. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_io.hpp +52 -52
  702. data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +14 -27
  703. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/custom_time_zone.hpp +0 -1
  704. data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -1
  705. data/src/cxx_supportlib/vendor-modified/boost/date_time/microsec_time_clock.hpp +36 -5
  706. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +10 -9
  707. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +10 -12
  708. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +18 -10
  709. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +12 -12
  710. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +65 -20
  711. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +32 -23
  712. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +6 -5
  713. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +10 -7
  714. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -3
  715. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +20 -0
  716. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +31 -8
  717. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +10 -4
  718. data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +3 -1
  719. data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +2 -264
  720. data/src/cxx_supportlib/vendor-modified/boost/enable_shared_from_this.hpp +1 -1
  721. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +38 -21
  722. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +10 -9
  723. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +3 -2
  724. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +7 -6
  725. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +7 -6
  726. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +10 -7
  727. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +8 -6
  728. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +13 -47
  729. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +5 -4
  730. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +5 -4
  731. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +12 -4
  732. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +2 -0
  733. data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +102 -0
  734. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +20 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +9 -0
  736. data/src/cxx_supportlib/vendor-modified/boost/functional/hash.hpp +1 -2
  737. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +1 -6
  738. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +508 -390
  739. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +9 -1
  740. data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +3 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -3
  742. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +1 -1
  743. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +7 -20
  744. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +2 -2
  745. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +1 -1
  746. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +1 -1
  747. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +5 -5
  748. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +108 -2
  749. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +15 -5
  750. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
  751. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +8 -4
  752. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +147 -64
  753. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -2
  754. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +3 -3
  755. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +15 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +2 -2
  757. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +9 -2
  758. data/src/cxx_supportlib/vendor-modified/boost/intrusive_ptr.hpp +1 -1
  759. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +84 -0
  760. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +0 -2
  761. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +3 -2
  762. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +8 -10
  763. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +2 -1
  764. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +7 -6
  765. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +7 -4
  766. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +6 -2
  767. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +7 -7
  768. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
  769. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +36 -92
  770. data/src/cxx_supportlib/vendor-modified/boost/make_shared.hpp +1 -2
  771. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +2 -1
  772. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +57 -3
  773. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +1 -1
  774. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +12 -1
  775. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +40 -9
  776. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +6 -0
  777. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +253 -0
  778. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +563 -4
  779. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +324 -1071
  780. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +10 -10
  781. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +111 -0
  782. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +12 -11
  783. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/is_sorted.hpp +55 -0
  784. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +59 -143
  785. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +6 -6
  786. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +334 -0
  787. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +207 -0
  788. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +2 -1
  789. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +86 -0
  790. data/src/cxx_supportlib/vendor-modified/boost/move/algo/unique.hpp +55 -0
  791. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +1 -9
  792. data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +3 -4
  793. data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +25 -0
  794. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +59 -0
  795. data/src/cxx_supportlib/vendor-modified/boost/{intrusive → move}/detail/pointer_element.hpp +12 -12
  796. data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +45 -0
  797. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +19 -5
  798. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
  799. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +1 -1
  800. data/src/cxx_supportlib/vendor-modified/boost/mpl/get_tag.hpp +26 -0
  801. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +85 -55
  802. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/cast.hpp +1 -1
  803. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/conversion_traits.hpp +0 -7
  804. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/converter.hpp +4 -13
  805. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +26 -7
  806. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +98 -0
  807. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -10
  808. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +17 -21
  809. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +25 -6
  810. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +15 -15
  811. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
  812. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +499 -0
  813. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +126 -21
  814. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1 -0
  815. data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +10 -9
  816. data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +1 -1
  817. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +6 -1
  818. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +1 -1
  819. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +8 -1
  820. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +3 -1
  821. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c.h +1 -0
  822. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +53 -0
  823. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  824. data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +2 -2
  825. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -3
  826. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +80 -0
  827. data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +87 -0
  828. data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +9 -2
  829. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +43 -0
  830. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +58 -0
  831. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +4 -4
  832. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +63 -0
  833. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +63 -0
  834. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +9 -3
  835. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +7 -2
  836. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +13 -5
  837. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +47 -0
  838. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +11 -4
  839. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +47 -0
  840. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +60 -0
  841. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  842. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +11 -9
  843. data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +27 -27
  844. data/src/cxx_supportlib/vendor-modified/boost/random/detail/vector_io.hpp +3 -0
  845. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +2 -2
  846. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +0 -11
  847. data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +12 -0
  848. data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +5 -1
  849. data/src/cxx_supportlib/vendor-modified/boost/random/poisson_distribution.hpp +17 -17
  850. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -1
  851. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_on_sphere.hpp +6 -2
  852. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +6 -4
  853. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +1 -0
  854. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +1 -1
  855. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +2 -2
  856. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +2 -2
  857. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +56 -11
  858. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +10 -10
  859. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
  860. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +6 -1
  861. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +37 -13
  862. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +4 -4
  863. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +9 -6
  864. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -1
  865. data/src/cxx_supportlib/vendor-modified/boost/scoped_array.hpp +1 -2
  866. data/src/cxx_supportlib/vendor-modified/boost/scoped_ptr.hpp +1 -2
  867. data/src/cxx_supportlib/vendor-modified/boost/shared_array.hpp +1 -1
  868. data/src/cxx_supportlib/vendor-modified/boost/shared_ptr.hpp +1 -1
  869. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +333 -656
  870. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +4 -2
  871. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +1 -1
  872. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +148 -0
  873. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +91 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +6 -6
  875. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +15 -3
  876. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
  877. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
  878. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +3 -2
  879. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
  880. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
  881. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
  882. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +7 -0
  883. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
  884. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
  885. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
  886. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
  887. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
  888. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +1 -0
  889. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
  890. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
  891. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +3 -2
  892. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
  893. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
  894. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +29 -0
  895. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +21 -3
  896. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +1 -1
  897. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +6 -6
  898. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +26 -26
  899. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +17 -16
  900. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -2
  901. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +19 -19
  902. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +11 -12
  903. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +15 -16
  904. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +22 -22
  905. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +135 -90
  906. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +23 -23
  907. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +140 -111
  908. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +297 -49
  909. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
  910. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +30 -30
  911. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +30 -30
  912. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +4 -2
  913. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +5 -7
  914. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +19 -19
  915. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +5 -15
  916. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +118 -183
  917. data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_redef_macros.hpp +0 -0
  918. data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_undef_macros.hpp +0 -0
  919. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +62 -11
  920. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/log.hpp +15 -0
  921. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +0 -2
  922. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform.hpp +2 -0
  923. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +478 -0
  924. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +51 -85
  925. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +11 -3
  926. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/priority_executor_base.hpp +10 -4
  927. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +1 -0
  928. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +10 -0
  929. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +15 -4
  930. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +9 -0
  931. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +320 -92
  932. data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp +10 -0
  933. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +187 -112
  934. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +137 -164
  935. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +67 -37
  936. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +42 -0
  937. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +15 -9
  938. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +65 -33
  939. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +84 -158
  940. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +143 -35
  941. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_heap_alloc.hpp +32 -2
  942. data/src/cxx_supportlib/vendor-modified/boost/thread/shared_mutex.hpp +8 -1
  943. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_only.hpp +1 -1
  944. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +579 -589
  945. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +2 -1
  946. data/src/cxx_supportlib/vendor-modified/boost/token_iterator.hpp +5 -2
  947. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +7 -9
  948. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +8 -8
  949. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
  950. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +6 -2
  951. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +5 -8
  952. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_const.hpp +6 -0
  953. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_cv.hpp +6 -0
  954. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_lvalue_reference.hpp +6 -0
  955. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +6 -0
  956. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +7 -0
  957. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_rvalue_reference.hpp +6 -0
  958. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_volatile.hpp +6 -0
  959. data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +7 -0
  960. data/src/cxx_supportlib/vendor-modified/boost/type_traits/conditional.hpp +8 -0
  961. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv.hpp +6 -0
  962. data/src/cxx_supportlib/vendor-modified/boost/type_traits/decay.hpp +6 -0
  963. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +12 -1
  964. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +37 -0
  965. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +71 -14
  966. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +1 -1
  967. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +4 -1
  968. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +370 -102
  969. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +94 -0
  970. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +1177 -572
  971. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +2 -2
  972. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +24 -0
  973. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +25 -0
  974. data/src/cxx_supportlib/vendor-modified/boost/type_traits/floating_point_promotion.hpp +8 -0
  975. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_equal_to.hpp +3 -0
  976. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater.hpp +3 -0
  977. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater_equal.hpp +3 -0
  978. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less.hpp +3 -0
  979. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less_equal.hpp +3 -0
  980. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +93 -0
  981. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +95 -2
  982. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_not_equal_to.hpp +3 -0
  983. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +11 -2
  984. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +90 -0
  985. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +2 -1
  986. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +6 -0
  987. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +2 -1
  988. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +10 -2
  989. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +90 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complex.hpp +1 -0
  991. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +12 -2
  992. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +20 -2
  993. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +16 -2
  994. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +10 -2
  995. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +29 -0
  996. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +29 -0
  997. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +29 -0
  998. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_list_constructible.hpp +48 -0
  999. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +14 -3
  1000. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +14 -4
  1001. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +67 -0
  1002. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_signed.hpp +6 -0
  1003. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_unsigned.hpp +6 -0
  1004. data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +35 -0
  1005. data/src/cxx_supportlib/vendor-modified/boost/type_traits/promote.hpp +6 -0
  1006. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +6 -0
  1007. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_bounds.hpp +7 -0
  1008. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +6 -0
  1009. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +5 -0
  1010. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv_ref.hpp +30 -0
  1011. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +6 -0
  1012. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +7 -0
  1013. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_reference.hpp +5 -0
  1014. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +5 -0
  1015. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_identity.hpp +9 -0
  1016. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -3
  1017. data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +34 -0
  1018. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -85
  1019. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +1 -2
  1020. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +6 -0
  1021. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +2 -0
  1022. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +24 -14
  1023. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +18 -12
  1024. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4018 -4052
  1025. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +57 -97
  1026. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +56 -95
  1027. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +2150 -1777
  1028. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -38
  1029. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1630 -1420
  1030. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -37
  1031. data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +6 -3
  1032. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +55 -0
  1033. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +14 -17
  1034. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +44 -20
  1035. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +30 -30
  1036. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1037. data/src/cxx_supportlib/vendor-modified/boost/weak_ptr.hpp +1 -1
  1038. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  1039. data/src/ruby_supportlib/phusion_passenger/common_library.rb +3 -0
  1040. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +8 -1
  1041. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +7 -1
  1042. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -2
  1043. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +4 -4
  1044. metadata +201 -47
  1045. data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +0 -96
  1046. data/src/cxx_supportlib/MessageClient.h +0 -309
  1047. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/addressof.hpp +0 -40
  1048. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.hpp +0 -80
  1049. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/shared_ptr.hpp +0 -40
  1050. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/weak_ptr.hpp +0 -40
  1051. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/win_iocp_serial_port_service.hpp +0 -230
  1052. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.hpp +0 -156
  1053. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.ipp +0 -157
  1054. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/basic_context.hpp +0 -42
  1055. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_service.hpp +0 -42
  1056. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/basic_context.hpp +0 -436
  1057. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/context_service.hpp +0 -176
  1058. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_context_service.hpp +0 -396
  1059. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_operation.hpp +0 -526
  1060. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_stream_service.hpp +0 -573
  1061. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream.hpp +0 -503
  1062. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream_service.hpp +0 -186
  1063. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_service.hpp +0 -42
  1064. data/src/cxx_supportlib/vendor-modified/boost/container/detail/to_raw_pointer.hpp +0 -33
  1065. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +0 -47
  1066. data/src/cxx_supportlib/vendor-modified/boost/iterator.hpp +0 -20
  1067. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex_assert.hpp +0 -724
  1068. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +0 -149
  1069. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/thread.hpp +0 -155
  1070. data/src/cxx_supportlib/vendor-modified/boost/utility/empty_deleter.hpp +0 -43
@@ -48,45 +48,51 @@ namespace boost {
48
48
  namespace container {
49
49
 
50
50
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
51
- template <class Key, class T, class Compare, class Allocator>
52
- class flat_multimap;
51
+ template <class Key, class Compare, class AllocatorOrContainer>
52
+ class flat_multiset;
53
53
  #endif
54
54
 
55
55
  //! flat_set is a Sorted Associative Container that stores objects of type Key.
56
56
  //! It is also a Unique Associative Container, meaning that no two elements are the same.
57
57
  //!
58
- //! flat_set is similar to std::set but it's implemented like an ordered vector.
59
- //! This means that inserting a new element into a flat_set invalidates
60
- //! previous iterators and references
58
+ //! flat_set is similar to std::set but it's implemented by as an ordered sequence container.
59
+ //! The underlying sequence container is by default <i>vector</i> but it can also work
60
+ //! user-provided vector-like SequenceContainers (like <i>static_vector</i> or <i>small_vector</i>).
61
61
  //!
62
- //! Erasing an element of a flat_set invalidates iterators and references
63
- //! pointing to elements that come after (their keys are bigger) the erased element.
62
+ //! Using vector-like sequence containers means that inserting a new element into a flat_set might invalidate
63
+ //! previous iterators and references (unless that sequence container is <i>stable_vector</i> or a similar
64
+ //! container that offers stable pointers and references). Similarly, erasing an element might invalidate
65
+ //! iterators and references pointing to elements that come after (their keys are bigger) the erased element.
64
66
  //!
65
67
  //! This container provides random-access iterators.
66
68
  //!
67
69
  //! \tparam Key is the type to be inserted in the set, which is also the key_type
68
70
  //! \tparam Compare is the comparison functor used to order keys
69
- //! \tparam Allocator is the allocator to be used to allocate memory for this container
71
+ //! \tparam AllocatorOrContainer is either:
72
+ //! - The allocator to allocate <code>value_type</code>s (e.g. <i>allocator< std::pair<Key, T> > </i>).
73
+ //! (in this case <i>sequence_type</i> will be vector<value_type, AllocatorOrContainer>)
74
+ //! - The SequenceContainer to be used as the underlying <i>sequence_type</i>. It must be a vector-like
75
+ //! sequence container with random-access iterators.
70
76
  #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
71
- template <class Key, class Compare = std::less<Key>, class Allocator = new_allocator<Key> >
77
+ template <class Key, class Compare = std::less<Key>, class AllocatorOrContainer = new_allocator<Key> >
72
78
  #else
73
- template <class Key, class Compare, class Allocator>
79
+ template <class Key, class Compare, class AllocatorOrContainer>
74
80
  #endif
75
81
  class flat_set
76
82
  ///@cond
77
- : public container_detail::flat_tree<Key, container_detail::identity<Key>, Compare, Allocator>
83
+ : public dtl::flat_tree<Key, dtl::identity<Key>, Compare, AllocatorOrContainer>
78
84
  ///@endcond
79
85
  {
80
86
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
81
87
  private:
82
88
  BOOST_COPYABLE_AND_MOVABLE(flat_set)
83
- typedef container_detail::flat_tree<Key, container_detail::identity<Key>, Compare, Allocator> base_t;
89
+ typedef dtl::flat_tree<Key, dtl::identity<Key>, Compare, AllocatorOrContainer> tree_t;
84
90
 
85
91
  public:
86
- base_t &tree()
92
+ tree_t &tree()
87
93
  { return *this; }
88
94
 
89
- const base_t &tree() const
95
+ const tree_t &tree() const
90
96
  { return *this; }
91
97
 
92
98
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
@@ -97,23 +103,25 @@ class flat_set
97
103
  // types
98
104
  //
99
105
  //////////////////////////////////////////////
100
- typedef Key key_type;
101
- typedef Key value_type;
102
- typedef Compare key_compare;
103
- typedef Compare value_compare;
104
- typedef ::boost::container::allocator_traits<Allocator> allocator_traits_type;
105
- typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
106
- typedef typename ::boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
107
- typedef typename ::boost::container::allocator_traits<Allocator>::reference reference;
108
- typedef typename ::boost::container::allocator_traits<Allocator>::const_reference const_reference;
109
- typedef typename ::boost::container::allocator_traits<Allocator>::size_type size_type;
110
- typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
111
- typedef Allocator allocator_type;
112
- typedef typename BOOST_CONTAINER_IMPDEF(base_t::stored_allocator_type) stored_allocator_type;
113
- typedef typename BOOST_CONTAINER_IMPDEF(base_t::iterator) iterator;
114
- typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_iterator) const_iterator;
115
- typedef typename BOOST_CONTAINER_IMPDEF(base_t::reverse_iterator) reverse_iterator;
116
- typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_reverse_iterator) const_reverse_iterator;
106
+ typedef Key key_type;
107
+ typedef Compare key_compare;
108
+ typedef Key value_type;
109
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::sequence_type) sequence_type;
110
+ typedef typename sequence_type::allocator_type allocator_type;
111
+ typedef ::boost::container::allocator_traits<allocator_type> allocator_traits_type;
112
+ typedef typename sequence_type::pointer pointer;
113
+ typedef typename sequence_type::const_pointer const_pointer;
114
+ typedef typename sequence_type::reference reference;
115
+ typedef typename sequence_type::const_reference const_reference;
116
+ typedef typename sequence_type::size_type size_type;
117
+ typedef typename sequence_type::difference_type difference_type;
118
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::stored_allocator_type) stored_allocator_type;
119
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::value_compare) value_compare;
120
+
121
+ typedef typename sequence_type::iterator iterator;
122
+ typedef typename sequence_type::const_iterator const_iterator;
123
+ typedef typename sequence_type::reverse_iterator reverse_iterator;
124
+ typedef typename sequence_type::const_reverse_iterator const_reverse_iterator;
117
125
 
118
126
  public:
119
127
  //////////////////////////////////////////////
@@ -125,37 +133,47 @@ class flat_set
125
133
  //! <b>Effects</b>: Default constructs an empty container.
126
134
  //!
127
135
  //! <b>Complexity</b>: Constant.
128
- explicit flat_set() BOOST_NOEXCEPT_IF(container_detail::is_nothrow_default_constructible<Allocator>::value &&
129
- container_detail::is_nothrow_default_constructible<Compare>::value)
130
- : base_t()
136
+ BOOST_CONTAINER_FORCEINLINE
137
+ flat_set() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<AllocatorOrContainer>::value &&
138
+ dtl::is_nothrow_default_constructible<Compare>::value)
139
+ : tree_t()
131
140
  {}
132
141
 
133
142
  //! <b>Effects</b>: Constructs an empty container using the specified
134
- //! comparison object and allocator.
143
+ //! comparison object.
135
144
  //!
136
145
  //! <b>Complexity</b>: Constant.
137
- explicit flat_set(const Compare& comp,
138
- const allocator_type& a = allocator_type())
139
- : base_t(comp, a)
146
+ BOOST_CONTAINER_FORCEINLINE
147
+ explicit flat_set(const Compare& comp)
148
+ : tree_t(comp)
140
149
  {}
141
150
 
142
151
  //! <b>Effects</b>: Constructs an empty container using the specified allocator.
143
152
  //!
144
153
  //! <b>Complexity</b>: Constant.
154
+ BOOST_CONTAINER_FORCEINLINE
145
155
  explicit flat_set(const allocator_type& a)
146
- : base_t(a)
156
+ : tree_t(a)
147
157
  {}
148
158
 
149
- //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
150
- //! allocator, and inserts elements from the range [first ,last ).
159
+ //! <b>Effects</b>: Constructs an empty container using the specified
160
+ //! comparison object and allocator.
161
+ //!
162
+ //! <b>Complexity</b>: Constant.
163
+ BOOST_CONTAINER_FORCEINLINE
164
+ flat_set(const Compare& comp, const allocator_type& a)
165
+ : tree_t(comp, a)
166
+ {}
167
+
168
+ //! <b>Effects</b>: Constructs an empty container and
169
+ //! inserts elements from the range [first ,last ).
151
170
  //!
152
171
  //! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using
153
172
  //! comp and otherwise N logN, where N is last - first.
154
173
  template <class InputIterator>
155
- flat_set(InputIterator first, InputIterator last,
156
- const Compare& comp = Compare(),
157
- const allocator_type& a = allocator_type())
158
- : base_t(true, first, last, comp, a)
174
+ BOOST_CONTAINER_FORCEINLINE
175
+ flat_set(InputIterator first, InputIterator last)
176
+ : tree_t(true, first, last)
159
177
  {}
160
178
 
161
179
  //! <b>Effects</b>: Constructs an empty container using the specified
@@ -164,8 +182,63 @@ class flat_set
164
182
  //! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using
165
183
  //! comp and otherwise N logN, where N is last - first.
166
184
  template <class InputIterator>
185
+ BOOST_CONTAINER_FORCEINLINE
167
186
  flat_set(InputIterator first, InputIterator last, const allocator_type& a)
168
- : base_t(true, first, last, Compare(), a)
187
+ : tree_t(true, first, last, a)
188
+ {}
189
+
190
+ //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
191
+ //! inserts elements from the range [first ,last ).
192
+ //!
193
+ //! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using
194
+ //! comp and otherwise N logN, where N is last - first.
195
+ template <class InputIterator>
196
+ BOOST_CONTAINER_FORCEINLINE
197
+ flat_set(InputIterator first, InputIterator last, const Compare& comp)
198
+ : tree_t(true, first, last, comp)
199
+ {}
200
+
201
+ //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
202
+ //! allocator, and inserts elements from the range [first ,last ).
203
+ //!
204
+ //! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using
205
+ //! comp and otherwise N logN, where N is last - first.
206
+ template <class InputIterator>
207
+ BOOST_CONTAINER_FORCEINLINE
208
+ flat_set(InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a)
209
+ : tree_t(true, first, last, comp, a)
210
+ {}
211
+
212
+ //! <b>Effects</b>: Constructs an empty container and
213
+ //! inserts elements from the ordered unique range [first ,last). This function
214
+ //! is more efficient than the normal range creation for ordered ranges.
215
+ //!
216
+ //! <b>Requires</b>: [first ,last) must be ordered according to the predicate and must be
217
+ //! unique values.
218
+ //!
219
+ //! <b>Complexity</b>: Linear in N.
220
+ //!
221
+ //! <b>Note</b>: Non-standard extension.
222
+ template <class InputIterator>
223
+ BOOST_CONTAINER_FORCEINLINE
224
+ flat_set(ordered_unique_range_t, InputIterator first, InputIterator last)
225
+ : tree_t(ordered_unique_range, first, last)
226
+ {}
227
+
228
+ //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
229
+ //! inserts elements from the ordered unique range [first ,last). This function
230
+ //! is more efficient than the normal range creation for ordered ranges.
231
+ //!
232
+ //! <b>Requires</b>: [first ,last) must be ordered according to the predicate and must be
233
+ //! unique values.
234
+ //!
235
+ //! <b>Complexity</b>: Linear in N.
236
+ //!
237
+ //! <b>Note</b>: Non-standard extension.
238
+ template <class InputIterator>
239
+ BOOST_CONTAINER_FORCEINLINE
240
+ flat_set(ordered_unique_range_t, InputIterator first, InputIterator last, const Compare& comp)
241
+ : tree_t(ordered_unique_range, first, last, comp)
169
242
  {}
170
243
 
171
244
  //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
@@ -179,21 +252,19 @@ class flat_set
179
252
  //!
180
253
  //! <b>Note</b>: Non-standard extension.
181
254
  template <class InputIterator>
182
- flat_set(ordered_unique_range_t, InputIterator first, InputIterator last,
183
- const Compare& comp = Compare(),
184
- const allocator_type& a = allocator_type())
185
- : base_t(ordered_unique_range, first, last, comp, a)
255
+ BOOST_CONTAINER_FORCEINLINE
256
+ flat_set(ordered_unique_range_t, InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a)
257
+ : tree_t(ordered_unique_range, first, last, comp, a)
186
258
  {}
187
259
 
188
260
  #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
189
- //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
190
- //! allocator, and inserts elements from the range [il.begin(), il.end()).
261
+ //! <b>Effects</b>: Constructs an empty container and
262
+ //! inserts elements from the range [il.begin(), il.end()).
191
263
  //!
192
264
  //! <b>Complexity</b>: Linear in N if the range [il.begin(), il.end()) is already sorted using
193
265
  //! comp and otherwise N logN, where N is il.begin() - il.end().
194
- flat_set(std::initializer_list<value_type> il, const Compare& comp = Compare(),
195
- const allocator_type& a = allocator_type())
196
- : base_t(true, il.begin(), il.end(), comp, a)
266
+ BOOST_CONTAINER_FORCEINLINE flat_set(std::initializer_list<value_type> il)
267
+ : tree_t(true, il.begin(), il.end())
197
268
  {}
198
269
 
199
270
  //! <b>Effects</b>: Constructs an empty container using the specified
@@ -201,8 +272,54 @@ class flat_set
201
272
  //!
202
273
  //! <b>Complexity</b>: Linear in N if the range [il.begin(), il.end()) is already sorted using
203
274
  //! comp and otherwise N logN, where N is il.begin() - il.end().
204
- flat_set(std::initializer_list<value_type> il, const allocator_type& a)
205
- : base_t(true, il.begin(), il.end(), Compare(), a)
275
+ BOOST_CONTAINER_FORCEINLINE flat_set(std::initializer_list<value_type> il, const allocator_type& a)
276
+ : tree_t(true, il.begin(), il.end(), a)
277
+ {}
278
+
279
+ //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
280
+ //! inserts elements from the range [il.begin(), il.end()).
281
+ //!
282
+ //! <b>Complexity</b>: Linear in N if the range [il.begin(), il.end()) is already sorted using
283
+ //! comp and otherwise N logN, where N is il.begin() - il.end().
284
+ BOOST_CONTAINER_FORCEINLINE flat_set(std::initializer_list<value_type> il, const Compare& comp)
285
+ : tree_t(true, il.begin(), il.end(), comp)
286
+ {}
287
+
288
+ //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
289
+ //! allocator, and inserts elements from the range [il.begin(), il.end()).
290
+ //!
291
+ //! <b>Complexity</b>: Linear in N if the range [il.begin(), il.end()) is already sorted using
292
+ //! comp and otherwise N logN, where N is il.begin() - il.end().
293
+ BOOST_CONTAINER_FORCEINLINE flat_set(std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a)
294
+ : tree_t(true, il.begin(), il.end(), comp, a)
295
+ {}
296
+
297
+ //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
298
+ //! inserts elements from the ordered unique range [il.begin(), il.end()). This function
299
+ //! is more efficient than the normal range creation for ordered ranges.
300
+ //!
301
+ //! <b>Requires</b>: [il.begin(), il.end()) must be ordered according to the predicate and must be
302
+ //! unique values.
303
+ //!
304
+ //! <b>Complexity</b>: Linear in N.
305
+ //!
306
+ //! <b>Note</b>: Non-standard extension.
307
+ BOOST_CONTAINER_FORCEINLINE flat_set(ordered_unique_range_t, std::initializer_list<value_type> il)
308
+ : tree_t(ordered_unique_range, il.begin(), il.end())
309
+ {}
310
+
311
+ //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
312
+ //! inserts elements from the ordered unique range [il.begin(), il.end()). This function
313
+ //! is more efficient than the normal range creation for ordered ranges.
314
+ //!
315
+ //! <b>Requires</b>: [il.begin(), il.end()) must be ordered according to the predicate and must be
316
+ //! unique values.
317
+ //!
318
+ //! <b>Complexity</b>: Linear in N.
319
+ //!
320
+ //! <b>Note</b>: Non-standard extension.
321
+ BOOST_CONTAINER_FORCEINLINE flat_set(ordered_unique_range_t, std::initializer_list<value_type> il, const Compare& comp)
322
+ : tree_t(ordered_unique_range, il.begin(), il.end(), comp)
206
323
  {}
207
324
 
208
325
  //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
@@ -215,17 +332,16 @@ class flat_set
215
332
  //! <b>Complexity</b>: Linear in N.
216
333
  //!
217
334
  //! <b>Note</b>: Non-standard extension.
218
- flat_set(ordered_unique_range_t, std::initializer_list<value_type> il,
219
- const Compare& comp = Compare(), const allocator_type& a = allocator_type())
220
- : base_t(ordered_unique_range, il.begin(), il.end(), comp, a)
335
+ BOOST_CONTAINER_FORCEINLINE flat_set(ordered_unique_range_t, std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a)
336
+ : tree_t(ordered_unique_range, il.begin(), il.end(), comp, a)
221
337
  {}
222
338
  #endif
223
339
 
224
340
  //! <b>Effects</b>: Copy constructs the container.
225
341
  //!
226
342
  //! <b>Complexity</b>: Linear in x.size().
227
- flat_set(const flat_set& x)
228
- : base_t(static_cast<const base_t&>(x))
343
+ BOOST_CONTAINER_FORCEINLINE flat_set(const flat_set& x)
344
+ : tree_t(static_cast<const tree_t&>(x))
229
345
  {}
230
346
 
231
347
  //! <b>Effects</b>: Move constructs thecontainer. Constructs *this using x's resources.
@@ -233,31 +349,31 @@ class flat_set
233
349
  //! <b>Complexity</b>: Constant.
234
350
  //!
235
351
  //! <b>Postcondition</b>: x is emptied.
236
- flat_set(BOOST_RV_REF(flat_set) x)
237
- BOOST_NOEXCEPT_IF(boost::container::container_detail::is_nothrow_move_constructible<Compare>::value)
238
- : base_t(BOOST_MOVE_BASE(base_t, x))
352
+ BOOST_CONTAINER_FORCEINLINE flat_set(BOOST_RV_REF(flat_set) x)
353
+ BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_constructible<Compare>::value)
354
+ : tree_t(BOOST_MOVE_BASE(tree_t, x))
239
355
  {}
240
356
 
241
357
  //! <b>Effects</b>: Copy constructs a container using the specified allocator.
242
358
  //!
243
359
  //! <b>Complexity</b>: Linear in x.size().
244
- flat_set(const flat_set& x, const allocator_type &a)
245
- : base_t(static_cast<const base_t&>(x), a)
360
+ BOOST_CONTAINER_FORCEINLINE flat_set(const flat_set& x, const allocator_type &a)
361
+ : tree_t(static_cast<const tree_t&>(x), a)
246
362
  {}
247
363
 
248
364
  //! <b>Effects</b>: Move constructs a container using the specified allocator.
249
365
  //! Constructs *this using x's resources.
250
366
  //!
251
367
  //! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise
252
- flat_set(BOOST_RV_REF(flat_set) x, const allocator_type &a)
253
- : base_t(BOOST_MOVE_BASE(base_t, x), a)
368
+ BOOST_CONTAINER_FORCEINLINE flat_set(BOOST_RV_REF(flat_set) x, const allocator_type &a)
369
+ : tree_t(BOOST_MOVE_BASE(tree_t, x), a)
254
370
  {}
255
371
 
256
372
  //! <b>Effects</b>: Makes *this a copy of x.
257
373
  //!
258
374
  //! <b>Complexity</b>: Linear in x.size().
259
- flat_set& operator=(BOOST_COPY_ASSIGN_REF(flat_set) x)
260
- { return static_cast<flat_set&>(this->base_t::operator=(static_cast<const base_t&>(x))); }
375
+ BOOST_CONTAINER_FORCEINLINE flat_set& operator=(BOOST_COPY_ASSIGN_REF(flat_set) x)
376
+ { return static_cast<flat_set&>(this->tree_t::operator=(static_cast<const tree_t&>(x))); }
261
377
 
262
378
  //! <b>Throws</b>: If allocator_traits_type::propagate_on_container_move_assignment
263
379
  //! is false and (allocation throws or value_type's move constructor throws)
@@ -265,11 +381,11 @@ class flat_set
265
381
  //! <b>Complexity</b>: Constant if allocator_traits_type::
266
382
  //! propagate_on_container_move_assignment is true or
267
383
  //! this->get>allocator() == x.get_allocator(). Linear otherwise.
268
- flat_set& operator=(BOOST_RV_REF(flat_set) x)
384
+ BOOST_CONTAINER_FORCEINLINE flat_set& operator=(BOOST_RV_REF(flat_set) x)
269
385
  BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value ||
270
386
  allocator_traits_type::is_always_equal::value) &&
271
- boost::container::container_detail::is_nothrow_move_assignable<Compare>::value)
272
- { return static_cast<flat_set&>(this->base_t::operator=(BOOST_MOVE_BASE(base_t, x))); }
387
+ boost::container::dtl::is_nothrow_move_assignable<Compare>::value)
388
+ { return static_cast<flat_set&>(this->tree_t::operator=(BOOST_MOVE_BASE(tree_t, x))); }
273
389
 
274
390
  #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
275
391
  //! <b>Effects</b>: Copy all elements from il to *this.
@@ -427,12 +543,13 @@ class flat_set
427
543
  //! <b>Complexity</b>: Constant.
428
544
  size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW;
429
545
 
430
- //! <b>Effects</b>: If n is less than or equal to capacity(), this call has no
546
+ //! <b>Effects</b>: If n is less than or equal to capacity(), or the
547
+ //! underlying container has no `reserve` member, this call has no
431
548
  //! effect. Otherwise, it is a request for allocation of additional memory.
432
549
  //! If the request is successful, then capacity() is greater than or equal to
433
550
  //! n; otherwise, capacity() is unchanged. In either case, size() is unchanged.
434
551
  //!
435
- //! <b>Throws</b>: If memory allocation allocation throws or Key's copy constructor throws.
552
+ //! <b>Throws</b>: If memory allocation allocation throws or T's copy constructor throws.
436
553
  //!
437
554
  //! <b>Note</b>: If capacity() is less than "cnt", iterators and references to
438
555
  //! to values might be invalidated.
@@ -469,8 +586,8 @@ class flat_set
469
586
  //!
470
587
  //! <b>Note</b>: If an element is inserted it might invalidate elements.
471
588
  template <class... Args>
472
- std::pair<iterator,bool> emplace(BOOST_FWD_REF(Args)... args)
473
- { return this->base_t::emplace_unique(boost::forward<Args>(args)...); }
589
+ BOOST_CONTAINER_FORCEINLINE std::pair<iterator,bool> emplace(BOOST_FWD_REF(Args)... args)
590
+ { return this->tree_t::emplace_unique(boost::forward<Args>(args)...); }
474
591
 
475
592
  //! <b>Effects</b>: Inserts an object of type Key constructed with
476
593
  //! std::forward<Args>(args)... in the container if and only if there is
@@ -485,19 +602,19 @@ class flat_set
485
602
  //!
486
603
  //! <b>Note</b>: If an element is inserted it might invalidate elements.
487
604
  template <class... Args>
488
- iterator emplace_hint(const_iterator p, BOOST_FWD_REF(Args)... args)
489
- { return this->base_t::emplace_hint_unique(p, boost::forward<Args>(args)...); }
605
+ BOOST_CONTAINER_FORCEINLINE iterator emplace_hint(const_iterator p, BOOST_FWD_REF(Args)... args)
606
+ { return this->tree_t::emplace_hint_unique(p, boost::forward<Args>(args)...); }
490
607
 
491
608
  #else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
492
609
 
493
610
  #define BOOST_CONTAINER_FLAT_SET_EMPLACE_CODE(N) \
494
611
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
495
- std::pair<iterator,bool> emplace(BOOST_MOVE_UREF##N)\
496
- { return this->base_t::emplace_unique(BOOST_MOVE_FWD##N); }\
612
+ BOOST_CONTAINER_FORCEINLINE std::pair<iterator,bool> emplace(BOOST_MOVE_UREF##N)\
613
+ { return this->tree_t::emplace_unique(BOOST_MOVE_FWD##N); }\
497
614
  \
498
615
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
499
- iterator emplace_hint(const_iterator hint BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
500
- { return this->base_t::emplace_hint_unique(hint BOOST_MOVE_I##N BOOST_MOVE_FWD##N); }\
616
+ BOOST_CONTAINER_FORCEINLINE iterator emplace_hint(const_iterator hint BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
617
+ { return this->tree_t::emplace_hint_unique(hint BOOST_MOVE_I##N BOOST_MOVE_FWD##N); }\
501
618
  //
502
619
  BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_FLAT_SET_EMPLACE_CODE)
503
620
  #undef BOOST_CONTAINER_FLAT_SET_EMPLACE_CODE
@@ -570,13 +687,12 @@ class flat_set
570
687
  //! <b>Effects</b>: inserts each element from the range [first,last) if and only
571
688
  //! if there is no element with key equivalent to the key of that element.
572
689
  //!
573
- //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
574
- //! search time plus N*size() insertion time.
690
+ //! <b>Complexity</b>: N log(N).
575
691
  //!
576
692
  //! <b>Note</b>: If an element is inserted it might invalidate elements.
577
693
  template <class InputIterator>
578
- void insert(InputIterator first, InputIterator last)
579
- { this->base_t::insert_unique(first, last); }
694
+ BOOST_CONTAINER_FORCEINLINE void insert(InputIterator first, InputIterator last)
695
+ { this->tree_t::insert_unique(first, last); }
580
696
 
581
697
  //! <b>Requires</b>: first, last are not iterators into *this and
582
698
  //! must be ordered according to the predicate and must be
@@ -585,24 +701,22 @@ class flat_set
585
701
  //! <b>Effects</b>: inserts each element from the range [first,last) .This function
586
702
  //! is more efficient than the normal range creation for ordered ranges.
587
703
  //!
588
- //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
589
- //! search time plus N*size() insertion time.
704
+ //! <b>Complexity</b>: Linear.
590
705
  //!
591
706
  //! <b>Note</b>: Non-standard extension. If an element is inserted it might invalidate elements.
592
707
  template <class InputIterator>
593
- void insert(ordered_unique_range_t, InputIterator first, InputIterator last)
594
- { this->base_t::insert_unique(ordered_unique_range, first, last); }
708
+ BOOST_CONTAINER_FORCEINLINE void insert(ordered_unique_range_t, InputIterator first, InputIterator last)
709
+ { this->tree_t::insert_unique(ordered_unique_range, first, last); }
595
710
 
596
711
  #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
597
712
  //! <b>Effects</b>: inserts each element from the range [il.begin(), il.end()) if and only
598
713
  //! if there is no element with key equivalent to the key of that element.
599
714
  //!
600
- //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from il.begin() to il.end())
601
- //! search time plus N*size() insertion time.
715
+ //! <b>Complexity</b>: N log(N).
602
716
  //!
603
717
  //! <b>Note</b>: If an element is inserted it might invalidate elements.
604
- void insert(std::initializer_list<value_type> il)
605
- { this->base_t::insert_unique(il.begin(), il.end()); }
718
+ BOOST_CONTAINER_FORCEINLINE void insert(std::initializer_list<value_type> il)
719
+ { this->tree_t::insert_unique(il.begin(), il.end()); }
606
720
 
607
721
  //! <b>Requires</b>: Range [il.begin(), il.end()) must be ordered according to the predicate
608
722
  //! and must be unique values.
@@ -610,33 +724,32 @@ class flat_set
610
724
  //! <b>Effects</b>: inserts each element from the range [il.begin(), il.end()) .This function
611
725
  //! is more efficient than the normal range creation for ordered ranges.
612
726
  //!
613
- //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from il.begin() to il.end())
614
- //! search time plus N*size() insertion time.
727
+ //! <b>Complexity</b>: Linear.
615
728
  //!
616
729
  //! <b>Note</b>: Non-standard extension. If an element is inserted it might invalidate elements.
617
- void insert(ordered_unique_range_t, std::initializer_list<value_type> il)
618
- { this->base_t::insert_unique(ordered_unique_range, il.begin(), il.end()); }
730
+ BOOST_CONTAINER_FORCEINLINE void insert(ordered_unique_range_t, std::initializer_list<value_type> il)
731
+ { this->tree_t::insert_unique(ordered_unique_range, il.begin(), il.end()); }
619
732
  #endif
620
733
 
621
- //! @copydoc ::boost::container::flat_map::merge(flat_map<Key, T, C2, Allocator>&)
734
+ //! @copydoc ::boost::container::flat_map::merge(flat_map<Key, T, C2, AllocatorOrContainer>&)
622
735
  template<class C2>
623
- BOOST_CONTAINER_FORCEINLINE void merge(flat_set<Key, C2, Allocator>& source)
624
- { this->base_t::merge_unique(source.tree()); }
736
+ BOOST_CONTAINER_FORCEINLINE void merge(flat_set<Key, C2, AllocatorOrContainer>& source)
737
+ { this->tree_t::merge_unique(source.tree()); }
625
738
 
626
- //! @copydoc ::boost::container::flat_map::merge(flat_set<Key, C2, Allocator>&)
739
+ //! @copydoc ::boost::container::flat_set::merge(flat_set<Key, C2, AllocatorOrContainer>&)
627
740
  template<class C2>
628
- BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG flat_set<Key, C2, Allocator> BOOST_RV_REF_END source)
629
- { return this->merge(static_cast<flat_set<Key, C2, Allocator>&>(source)); }
741
+ BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG flat_set<Key, C2, AllocatorOrContainer> BOOST_RV_REF_END source)
742
+ { return this->merge(static_cast<flat_set<Key, C2, AllocatorOrContainer>&>(source)); }
630
743
 
631
- //! @copydoc ::boost::container::flat_map::merge(flat_multimap<Key, T, C2, Allocator>&)
744
+ //! @copydoc ::boost::container::flat_map::merge(flat_multimap<Key, T, C2, AllocatorOrContainer>&)
632
745
  template<class C2>
633
- BOOST_CONTAINER_FORCEINLINE void merge(flat_multiset<Key, C2, Allocator>& source)
634
- { this->base_t::merge_unique(source.tree()); }
746
+ BOOST_CONTAINER_FORCEINLINE void merge(flat_multiset<Key, C2, AllocatorOrContainer>& source)
747
+ { this->tree_t::merge_unique(source.tree()); }
635
748
 
636
- //! @copydoc ::boost::container::flat_map::merge(flat_multiset<Key, C2, Allocator>&)
749
+ //! @copydoc ::boost::container::flat_set::merge(flat_multiset<Key, C2, AllocatorOrContainer>&)
637
750
  template<class C2>
638
- BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG flat_multiset<Key, C2, Allocator> BOOST_RV_REF_END source)
639
- { return this->merge(static_cast<flat_multiset<Key, C2, Allocator>&>(source)); }
751
+ BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG flat_multiset<Key, C2, AllocatorOrContainer> BOOST_RV_REF_END source)
752
+ { return this->merge(static_cast<flat_multiset<Key, C2, AllocatorOrContainer>&>(source)); }
640
753
 
641
754
  #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
642
755
 
@@ -677,7 +790,7 @@ class flat_set
677
790
  //! <b>Complexity</b>: Constant.
678
791
  void swap(flat_set& x)
679
792
  BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value
680
- && boost::container::container_detail::is_nothrow_swappable<Compare>::value );
793
+ && boost::container::dtl::is_nothrow_swappable<Compare>::value );
681
794
 
682
795
  //! <b>Effects</b>: erase(a.begin(),a.end()).
683
796
  //!
@@ -765,8 +878,8 @@ class flat_set
765
878
  //! <b>Returns</b>: The number of elements with key equivalent to x.
766
879
  //!
767
880
  //! <b>Complexity</b>: log(size())+count(k)
768
- size_type count(const key_type& x) const
769
- { return static_cast<size_type>(this->base_t::find(x) != this->base_t::cend()); }
881
+ BOOST_CONTAINER_FORCEINLINE size_type count(const key_type& x) const
882
+ { return static_cast<size_type>(this->tree_t::find(x) != this->tree_t::cend()); }
770
883
 
771
884
  #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
772
885
  //! <b>Returns</b>: An iterator pointing to the first element with key not less
@@ -798,14 +911,14 @@ class flat_set
798
911
  //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
799
912
  //!
800
913
  //! <b>Complexity</b>: Logarithmic
801
- std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const
802
- { return this->base_t::lower_bound_range(x); }
914
+ BOOST_CONTAINER_FORCEINLINE std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const
915
+ { return this->tree_t::lower_bound_range(x); }
803
916
 
804
917
  //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
805
918
  //!
806
919
  //! <b>Complexity</b>: Logarithmic
807
- std::pair<iterator,iterator> equal_range(const key_type& x)
808
- { return this->base_t::lower_bound_range(x); }
920
+ BOOST_CONTAINER_FORCEINLINE std::pair<iterator,iterator> equal_range(const key_type& x)
921
+ { return this->tree_t::lower_bound_range(x); }
809
922
 
810
923
  #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
811
924
 
@@ -844,17 +957,47 @@ class flat_set
844
957
  //! <b>Complexity</b>: Constant.
845
958
  friend void swap(flat_set& x, flat_set& y);
846
959
 
960
+ //! <b>Effects</b>: Extracts the internal sequence container.
961
+ //!
962
+ //! <b>Complexity</b>: Same as the move constructor of sequence_type, usually constant.
963
+ //!
964
+ //! <b>Postcondition</b>: this->empty()
965
+ //!
966
+ //! <b>Throws</b>: If secuence_type's move constructor throws
967
+ sequence_type extract_sequence();
968
+
847
969
  #endif //#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
848
970
 
971
+ //! <b>Effects</b>: Discards the internally hold sequence container and adopts the
972
+ //! one passed externally using the move assignment. Erases non-unique elements.
973
+ //!
974
+ //! <b>Complexity</b>: Assuming O(1) move assignment, O(NlogN) with N = seq.size()
975
+ //!
976
+ //! <b>Throws</b>: If the comparison or the move constructor throws
977
+ BOOST_CONTAINER_FORCEINLINE void adopt_sequence(BOOST_RV_REF(sequence_type) seq)
978
+ { this->tree_t::adopt_sequence_unique(boost::move(seq)); }
979
+
980
+ //! <b>Requires</b>: seq shall be ordered according to this->compare()
981
+ //! and shall contain unique elements.
982
+ //!
983
+ //! <b>Effects</b>: Discards the internally hold sequence container and adopts the
984
+ //! one passed externally using the move assignment.
985
+ //!
986
+ //! <b>Complexity</b>: Assuming O(1) move assignment, O(1)
987
+ //!
988
+ //! <b>Throws</b>: If the move assignment throws
989
+ BOOST_CONTAINER_FORCEINLINE void adopt_sequence(ordered_unique_range_t, BOOST_RV_REF(sequence_type) seq)
990
+ { this->tree_t::adopt_sequence_unique(ordered_unique_range_t(), boost::move(seq)); }
991
+
849
992
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
850
993
  private:
851
994
  template<class KeyType>
852
- std::pair<iterator, bool> priv_insert(BOOST_FWD_REF(KeyType) x)
853
- { return this->base_t::insert_unique(::boost::forward<KeyType>(x)); }
995
+ BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> priv_insert(BOOST_FWD_REF(KeyType) x)
996
+ { return this->tree_t::insert_unique(::boost::forward<KeyType>(x)); }
854
997
 
855
998
  template<class KeyType>
856
- iterator priv_insert(const_iterator p, BOOST_FWD_REF(KeyType) x)
857
- { return this->base_t::insert_unique(p, ::boost::forward<KeyType>(x)); }
999
+ BOOST_CONTAINER_FORCEINLINE iterator priv_insert(const_iterator p, BOOST_FWD_REF(KeyType) x)
1000
+ { return this->tree_t::insert_unique(p, ::boost::forward<KeyType>(x)); }
858
1001
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
859
1002
  };
860
1003
 
@@ -864,11 +1007,11 @@ class flat_set
864
1007
 
865
1008
  //!has_trivial_destructor_after_move<> == true_type
866
1009
  //!specialization for optimizations
867
- template <class Key, class Compare, class Allocator>
868
- struct has_trivial_destructor_after_move<boost::container::flat_set<Key, Compare, Allocator> >
1010
+ template <class Key, class Compare, class AllocatorOrContainer>
1011
+ struct has_trivial_destructor_after_move<boost::container::flat_set<Key, Compare, AllocatorOrContainer> >
869
1012
  {
870
- typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
871
- static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
1013
+ typedef typename ::boost::container::allocator_traits<AllocatorOrContainer>::pointer pointer;
1014
+ static const bool value = ::boost::has_trivial_destructor_after_move<AllocatorOrContainer>::value &&
872
1015
  ::boost::has_trivial_destructor_after_move<pointer>::value &&
873
1016
  ::boost::has_trivial_destructor_after_move<Compare>::value;
874
1017
  };
@@ -877,42 +1020,47 @@ namespace container {
877
1020
 
878
1021
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
879
1022
 
880
- //! flat_multiset is a Sorted Associative Container that stores objects of type Key.
881
- //!
882
- //! flat_multiset can store multiple copies of the same key value.
1023
+ //! flat_multiset is a Sorted Associative Container that stores objects of type Key and
1024
+ //! can store multiple copies of the same key value.
883
1025
  //!
884
- //! flat_multiset is similar to std::multiset but it's implemented like an ordered vector.
885
- //! This means that inserting a new element into a flat_multiset invalidates
886
- //! previous iterators and references
1026
+ //! flat_multiset is similar to std::multiset but it's implemented by as an ordered sequence container.
1027
+ //! The underlying sequence container is by default <i>vector</i> but it can also work
1028
+ //! user-provided vector-like SequenceContainers (like <i>static_vector</i> or <i>small_vector</i>).
887
1029
  //!
888
- //! Erasing an element invalidates iterators and references
889
- //! pointing to elements that come after (their keys are bigger) the erased element.
1030
+ //! Using vector-like sequence containers means that inserting a new element into a flat_multiset might invalidate
1031
+ //! previous iterators and references (unless that sequence container is <i>stable_vector</i> or a similar
1032
+ //! container that offers stable pointers and references). Similarly, erasing an element might invalidate
1033
+ //! iterators and references pointing to elements that come after (their keys are bigger) the erased element.
890
1034
  //!
891
1035
  //! This container provides random-access iterators.
892
1036
  //!
893
1037
  //! \tparam Key is the type to be inserted in the multiset, which is also the key_type
894
1038
  //! \tparam Compare is the comparison functor used to order keys
895
- //! \tparam Allocator is the allocator to be used to allocate memory for this container
1039
+ //! \tparam AllocatorOrContainer is either:
1040
+ //! - The allocator to allocate <code>value_type</code>s (e.g. <i>allocator< std::pair<Key, T> > </i>).
1041
+ //! (in this case <i>sequence_type</i> will be vector<value_type, AllocatorOrContainer>)
1042
+ //! - The SequenceContainer to be used as the underlying <i>sequence_type</i>. It must be a vector-like
1043
+ //! sequence container with random-access iterators.
896
1044
  #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
897
- template <class Key, class Compare = std::less<Key>, class Allocator = new_allocator<Key> >
1045
+ template <class Key, class Compare = std::less<Key>, class AllocatorOrContainer = new_allocator<Key> >
898
1046
  #else
899
- template <class Key, class Compare, class Allocator>
1047
+ template <class Key, class Compare, class AllocatorOrContainer>
900
1048
  #endif
901
1049
  class flat_multiset
902
1050
  ///@cond
903
- : public container_detail::flat_tree<Key, container_detail::identity<Key>, Compare, Allocator>
1051
+ : public dtl::flat_tree<Key, dtl::identity<Key>, Compare, AllocatorOrContainer>
904
1052
  ///@endcond
905
1053
  {
906
1054
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
907
1055
  private:
908
1056
  BOOST_COPYABLE_AND_MOVABLE(flat_multiset)
909
- typedef container_detail::flat_tree<Key, container_detail::identity<Key>, Compare, Allocator> base_t;
1057
+ typedef dtl::flat_tree<Key, dtl::identity<Key>, Compare, AllocatorOrContainer> tree_t;
910
1058
 
911
1059
  public:
912
- base_t &tree()
1060
+ tree_t &tree()
913
1061
  { return *this; }
914
1062
 
915
- const base_t &tree() const
1063
+ const tree_t &tree() const
916
1064
  { return *this; }
917
1065
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
918
1066
 
@@ -922,57 +1070,101 @@ class flat_multiset
922
1070
  // types
923
1071
  //
924
1072
  //////////////////////////////////////////////
925
- typedef Key key_type;
926
- typedef Key value_type;
927
- typedef Compare key_compare;
928
- typedef Compare value_compare;
929
- typedef ::boost::container::allocator_traits<Allocator> allocator_traits_type;
930
- typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
931
- typedef typename ::boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
932
- typedef typename ::boost::container::allocator_traits<Allocator>::reference reference;
933
- typedef typename ::boost::container::allocator_traits<Allocator>::const_reference const_reference;
934
- typedef typename ::boost::container::allocator_traits<Allocator>::size_type size_type;
935
- typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
936
- typedef Allocator allocator_type;
937
- typedef typename BOOST_CONTAINER_IMPDEF(base_t::stored_allocator_type) stored_allocator_type;
938
- typedef typename BOOST_CONTAINER_IMPDEF(base_t::iterator) iterator;
939
- typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_iterator) const_iterator;
940
- typedef typename BOOST_CONTAINER_IMPDEF(base_t::reverse_iterator) reverse_iterator;
941
- typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_reverse_iterator) const_reverse_iterator;
1073
+ typedef Key key_type;
1074
+ typedef Compare key_compare;
1075
+ typedef Key value_type;
1076
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::sequence_type) sequence_type;
1077
+ typedef typename sequence_type::allocator_type allocator_type;
1078
+ typedef ::boost::container::allocator_traits<allocator_type> allocator_traits_type;
1079
+ typedef typename sequence_type::pointer pointer;
1080
+ typedef typename sequence_type::const_pointer const_pointer;
1081
+ typedef typename sequence_type::reference reference;
1082
+ typedef typename sequence_type::const_reference const_reference;
1083
+ typedef typename sequence_type::size_type size_type;
1084
+ typedef typename sequence_type::difference_type difference_type;
1085
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::stored_allocator_type) stored_allocator_type;
1086
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::value_compare) value_compare;
1087
+
1088
+ typedef typename sequence_type::iterator iterator;
1089
+ typedef typename sequence_type::const_iterator const_iterator;
1090
+ typedef typename sequence_type::reverse_iterator reverse_iterator;
1091
+ typedef typename sequence_type::const_reverse_iterator const_reverse_iterator;
942
1092
 
943
1093
  //! @copydoc ::boost::container::flat_set::flat_set()
944
- explicit flat_multiset() BOOST_NOEXCEPT_IF(container_detail::is_nothrow_default_constructible<Allocator>::value &&
945
- container_detail::is_nothrow_default_constructible<Compare>::value)
946
- : base_t()
1094
+ BOOST_CONTAINER_FORCEINLINE flat_multiset() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<AllocatorOrContainer>::value &&
1095
+ dtl::is_nothrow_default_constructible<Compare>::value)
1096
+ : tree_t()
947
1097
  {}
948
1098
 
949
- //! @copydoc ::boost::container::flat_set::flat_set(const Compare&, const allocator_type&)
950
- explicit flat_multiset(const Compare& comp,
951
- const allocator_type& a = allocator_type())
952
- : base_t(comp, a)
1099
+ //! @copydoc ::boost::container::flat_set::flat_set(const Compare&)
1100
+ BOOST_CONTAINER_FORCEINLINE explicit flat_multiset(const Compare& comp)
1101
+ : tree_t(comp)
953
1102
  {}
954
1103
 
955
1104
  //! @copydoc ::boost::container::flat_set::flat_set(const allocator_type&)
956
- explicit flat_multiset(const allocator_type& a)
957
- : base_t(a)
1105
+ BOOST_CONTAINER_FORCEINLINE explicit flat_multiset(const allocator_type& a)
1106
+ : tree_t(a)
958
1107
  {}
959
1108
 
960
- //! @copydoc ::boost::container::flat_set::flat_set(InputIterator, InputIterator, const Compare& comp, const allocator_type&)
1109
+ //! @copydoc ::boost::container::flat_set::flat_set(const Compare&, const allocator_type&)
1110
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(const Compare& comp, const allocator_type& a)
1111
+ : tree_t(comp, a)
1112
+ {}
1113
+
1114
+ //! @copydoc ::boost::container::flat_set::flat_set(InputIterator, InputIterator)
961
1115
  template <class InputIterator>
962
- flat_multiset(InputIterator first, InputIterator last,
963
- const Compare& comp = Compare(),
964
- const allocator_type& a = allocator_type())
965
- : base_t(false, first, last, comp, a)
1116
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(InputIterator first, InputIterator last)
1117
+ : tree_t(false, first, last)
966
1118
  {}
967
1119
 
968
1120
  //! @copydoc ::boost::container::flat_set::flat_set(InputIterator, InputIterator, const allocator_type&)
969
1121
  template <class InputIterator>
970
- flat_multiset(InputIterator first, InputIterator last, const allocator_type& a)
971
- : base_t(false, first, last, Compare(), a)
1122
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(InputIterator first, InputIterator last, const allocator_type& a)
1123
+ : tree_t(false, first, last, a)
1124
+ {}
1125
+
1126
+ //! @copydoc ::boost::container::flat_set::flat_set(InputIterator, InputIterator, const Compare& comp)
1127
+ template <class InputIterator>
1128
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(InputIterator first, InputIterator last, const Compare& comp)
1129
+ : tree_t(false, first, last, comp)
1130
+ {}
1131
+
1132
+ //! @copydoc ::boost::container::flat_set::flat_set(InputIterator, InputIterator, const Compare& comp, const allocator_type&)
1133
+ template <class InputIterator>
1134
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a)
1135
+ : tree_t(false, first, last, comp, a)
1136
+ {}
1137
+
1138
+ //! <b>Effects</b>: Constructs an empty flat_multiset and
1139
+ //! inserts elements from the ordered range [first ,last ). This function
1140
+ //! is more efficient than the normal range creation for ordered ranges.
1141
+ //!
1142
+ //! <b>Requires</b>: [first ,last) must be ordered according to the predicate.
1143
+ //!
1144
+ //! <b>Complexity</b>: Linear in N.
1145
+ //!
1146
+ //! <b>Note</b>: Non-standard extension.
1147
+ template <class InputIterator>
1148
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(ordered_range_t, InputIterator first, InputIterator last)
1149
+ : tree_t(ordered_range, first, last)
1150
+ {}
1151
+
1152
+ //! <b>Effects</b>: Constructs an empty flat_multiset using the specified comparison object and
1153
+ //! inserts elements from the ordered range [first ,last ). This function
1154
+ //! is more efficient than the normal range creation for ordered ranges.
1155
+ //!
1156
+ //! <b>Requires</b>: [first ,last) must be ordered according to the predicate.
1157
+ //!
1158
+ //! <b>Complexity</b>: Linear in N.
1159
+ //!
1160
+ //! <b>Note</b>: Non-standard extension.
1161
+ template <class InputIterator>
1162
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(ordered_range_t, InputIterator first, InputIterator last, const Compare& comp)
1163
+ : tree_t(ordered_range, first, last, comp)
972
1164
  {}
973
1165
 
974
1166
  //! <b>Effects</b>: Constructs an empty flat_multiset using the specified comparison object and
975
- //! allocator, and inserts elements from the ordered range [first ,last ). This function
1167
+ //! allocator, and inserts elements from the ordered range [first, last ). This function
976
1168
  //! is more efficient than the normal range creation for ordered ranges.
977
1169
  //!
978
1170
  //! <b>Requires</b>: [first ,last) must be ordered according to the predicate.
@@ -981,22 +1173,55 @@ class flat_multiset
981
1173
  //!
982
1174
  //! <b>Note</b>: Non-standard extension.
983
1175
  template <class InputIterator>
984
- flat_multiset(ordered_range_t, InputIterator first, InputIterator last,
985
- const Compare& comp = Compare(),
986
- const allocator_type& a = allocator_type())
987
- : base_t(ordered_range, first, last, comp, a)
1176
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(ordered_range_t, InputIterator first, InputIterator last, const Compare& comp, const allocator_type& a)
1177
+ : tree_t(ordered_range, first, last, comp, a)
988
1178
  {}
989
1179
 
990
1180
  #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
991
- //! @copydoc ::boost::container::flat_set::flat_set(std::initializer_list<value_type>, const Compare& comp, const allocator_type&)
992
- flat_multiset(std::initializer_list<value_type> il, const Compare& comp = Compare(),
993
- const allocator_type& a = allocator_type())
994
- : base_t(false, il.begin(), il.end(), comp, a)
1181
+ //! @copydoc ::boost::container::flat_set::flat_set(std::initializer_list<value_type)
1182
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(std::initializer_list<value_type> il)
1183
+ : tree_t(false, il.begin(), il.end())
995
1184
  {}
996
1185
 
997
1186
  //! @copydoc ::boost::container::flat_set::flat_set(std::initializer_list<value_type>, const allocator_type&)
998
- flat_multiset(std::initializer_list<value_type> il, const allocator_type& a)
999
- : base_t(false, il.begin(), il.end(), Compare(), a)
1187
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(std::initializer_list<value_type> il, const allocator_type& a)
1188
+ : tree_t(false, il.begin(), il.end(), a)
1189
+ {}
1190
+
1191
+ //! @copydoc ::boost::container::flat_set::flat_set(std::initializer_list<value_type>, const Compare& comp)
1192
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(std::initializer_list<value_type> il, const Compare& comp)
1193
+ : tree_t(false, il.begin(), il.end(), comp)
1194
+ {}
1195
+
1196
+ //! @copydoc ::boost::container::flat_set::flat_set(std::initializer_list<value_type>, const Compare& comp, const allocator_type&)
1197
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a)
1198
+ : tree_t(false, il.begin(), il.end(), comp, a)
1199
+ {}
1200
+
1201
+ //! <b>Effects</b>: Constructs an empty containerand
1202
+ //! inserts elements from the ordered unique range [il.begin(), il.end()). This function
1203
+ //! is more efficient than the normal range creation for ordered ranges.
1204
+ //!
1205
+ //! <b>Requires</b>: [il.begin(), il.end()) must be ordered according to the predicate.
1206
+ //!
1207
+ //! <b>Complexity</b>: Linear in N.
1208
+ //!
1209
+ //! <b>Note</b>: Non-standard extension.
1210
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(ordered_range_t, std::initializer_list<value_type> il)
1211
+ : tree_t(ordered_range, il.begin(), il.end())
1212
+ {}
1213
+
1214
+ //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
1215
+ //! inserts elements from the ordered unique range [il.begin(), il.end()). This function
1216
+ //! is more efficient than the normal range creation for ordered ranges.
1217
+ //!
1218
+ //! <b>Requires</b>: [il.begin(), il.end()) must be ordered according to the predicate.
1219
+ //!
1220
+ //! <b>Complexity</b>: Linear in N.
1221
+ //!
1222
+ //! <b>Note</b>: Non-standard extension.
1223
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(ordered_range_t, std::initializer_list<value_type> il, const Compare& comp)
1224
+ : tree_t(ordered_range, il.begin(), il.end(), comp)
1000
1225
  {}
1001
1226
 
1002
1227
  //! <b>Effects</b>: Constructs an empty container using the specified comparison object and
@@ -1008,43 +1233,42 @@ class flat_multiset
1008
1233
  //! <b>Complexity</b>: Linear in N.
1009
1234
  //!
1010
1235
  //! <b>Note</b>: Non-standard extension.
1011
- flat_multiset(ordered_range_t, std::initializer_list<value_type> il,
1012
- const Compare& comp = Compare(), const allocator_type& a = allocator_type())
1013
- : base_t(ordered_range, il.begin(), il.end(), comp, a)
1236
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(ordered_range_t, std::initializer_list<value_type> il, const Compare& comp, const allocator_type& a)
1237
+ : tree_t(ordered_range, il.begin(), il.end(), comp, a)
1014
1238
  {}
1015
1239
  #endif
1016
1240
 
1017
1241
  //! @copydoc ::boost::container::flat_set::flat_set(const flat_set &)
1018
- flat_multiset(const flat_multiset& x)
1019
- : base_t(static_cast<const base_t&>(x))
1242
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(const flat_multiset& x)
1243
+ : tree_t(static_cast<const tree_t&>(x))
1020
1244
  {}
1021
1245
 
1022
1246
  //! @copydoc ::boost::container::flat_set::flat_set(flat_set &&)
1023
- flat_multiset(BOOST_RV_REF(flat_multiset) x)
1024
- BOOST_NOEXCEPT_IF(boost::container::container_detail::is_nothrow_move_constructible<Compare>::value)
1025
- : base_t(boost::move(static_cast<base_t&>(x)))
1247
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(BOOST_RV_REF(flat_multiset) x)
1248
+ BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_constructible<Compare>::value)
1249
+ : tree_t(boost::move(static_cast<tree_t&>(x)))
1026
1250
  {}
1027
1251
 
1028
1252
  //! @copydoc ::boost::container::flat_set::flat_set(const flat_set &, const allocator_type &)
1029
- flat_multiset(const flat_multiset& x, const allocator_type &a)
1030
- : base_t(static_cast<const base_t&>(x), a)
1253
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(const flat_multiset& x, const allocator_type &a)
1254
+ : tree_t(static_cast<const tree_t&>(x), a)
1031
1255
  {}
1032
1256
 
1033
1257
  //! @copydoc ::boost::container::flat_set::flat_set(flat_set &&, const allocator_type &)
1034
- flat_multiset(BOOST_RV_REF(flat_multiset) x, const allocator_type &a)
1035
- : base_t(BOOST_MOVE_BASE(base_t, x), a)
1258
+ BOOST_CONTAINER_FORCEINLINE flat_multiset(BOOST_RV_REF(flat_multiset) x, const allocator_type &a)
1259
+ : tree_t(BOOST_MOVE_BASE(tree_t, x), a)
1036
1260
  {}
1037
1261
 
1038
1262
  //! @copydoc ::boost::container::flat_set::operator=(const flat_set &)
1039
- flat_multiset& operator=(BOOST_COPY_ASSIGN_REF(flat_multiset) x)
1040
- { return static_cast<flat_multiset&>(this->base_t::operator=(static_cast<const base_t&>(x))); }
1263
+ BOOST_CONTAINER_FORCEINLINE flat_multiset& operator=(BOOST_COPY_ASSIGN_REF(flat_multiset) x)
1264
+ { return static_cast<flat_multiset&>(this->tree_t::operator=(static_cast<const tree_t&>(x))); }
1041
1265
 
1042
1266
  //! @copydoc ::boost::container::flat_set::operator=(flat_set &&)
1043
- flat_multiset& operator=(BOOST_RV_REF(flat_multiset) x)
1267
+ BOOST_CONTAINER_FORCEINLINE flat_multiset& operator=(BOOST_RV_REF(flat_multiset) x)
1044
1268
  BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value ||
1045
1269
  allocator_traits_type::is_always_equal::value) &&
1046
- boost::container::container_detail::is_nothrow_move_assignable<Compare>::value)
1047
- { return static_cast<flat_multiset&>(this->base_t::operator=(BOOST_MOVE_BASE(base_t, x))); }
1270
+ boost::container::dtl::is_nothrow_move_assignable<Compare>::value)
1271
+ { return static_cast<flat_multiset&>(this->tree_t::operator=(BOOST_MOVE_BASE(tree_t, x))); }
1048
1272
 
1049
1273
  #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1050
1274
  //! @copydoc ::boost::container::flat_set::operator=(std::initializer_list<value_type>)
@@ -1140,8 +1364,8 @@ class flat_multiset
1140
1364
  //!
1141
1365
  //! <b>Note</b>: If an element is inserted it might invalidate elements.
1142
1366
  template <class... Args>
1143
- iterator emplace(BOOST_FWD_REF(Args)... args)
1144
- { return this->base_t::emplace_equal(boost::forward<Args>(args)...); }
1367
+ BOOST_CONTAINER_FORCEINLINE iterator emplace(BOOST_FWD_REF(Args)... args)
1368
+ { return this->tree_t::emplace_equal(boost::forward<Args>(args)...); }
1145
1369
 
1146
1370
  //! <b>Effects</b>: Inserts an object of type Key constructed with
1147
1371
  //! std::forward<Args>(args)... in the container.
@@ -1155,19 +1379,19 @@ class flat_multiset
1155
1379
  //!
1156
1380
  //! <b>Note</b>: If an element is inserted it might invalidate elements.
1157
1381
  template <class... Args>
1158
- iterator emplace_hint(const_iterator p, BOOST_FWD_REF(Args)... args)
1159
- { return this->base_t::emplace_hint_equal(p, boost::forward<Args>(args)...); }
1382
+ BOOST_CONTAINER_FORCEINLINE iterator emplace_hint(const_iterator p, BOOST_FWD_REF(Args)... args)
1383
+ { return this->tree_t::emplace_hint_equal(p, boost::forward<Args>(args)...); }
1160
1384
 
1161
1385
  #else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
1162
1386
 
1163
1387
  #define BOOST_CONTAINER_FLAT_MULTISET_EMPLACE_CODE(N) \
1164
1388
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1165
- iterator emplace(BOOST_MOVE_UREF##N)\
1166
- { return this->base_t::emplace_equal(BOOST_MOVE_FWD##N); }\
1389
+ BOOST_CONTAINER_FORCEINLINE iterator emplace(BOOST_MOVE_UREF##N)\
1390
+ { return this->tree_t::emplace_equal(BOOST_MOVE_FWD##N); }\
1167
1391
  \
1168
1392
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1169
- iterator emplace_hint(const_iterator hint BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1170
- { return this->base_t::emplace_hint_equal(hint BOOST_MOVE_I##N BOOST_MOVE_FWD##N); }\
1393
+ BOOST_CONTAINER_FORCEINLINE iterator emplace_hint(const_iterator hint BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1394
+ { return this->tree_t::emplace_hint_equal(hint BOOST_MOVE_I##N BOOST_MOVE_FWD##N); }\
1171
1395
  //
1172
1396
  BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_FLAT_MULTISET_EMPLACE_CODE)
1173
1397
  #undef BOOST_CONTAINER_FLAT_MULTISET_EMPLACE_CODE
@@ -1228,13 +1452,12 @@ class flat_multiset
1228
1452
  //!
1229
1453
  //! <b>Effects</b>: inserts each element from the range [first,last) .
1230
1454
  //!
1231
- //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
1232
- //! search time plus N*size() insertion time.
1455
+ //! <b>Complexity</b>: N log(N).
1233
1456
  //!
1234
1457
  //! <b>Note</b>: If an element is inserted it might invalidate elements.
1235
1458
  template <class InputIterator>
1236
- void insert(InputIterator first, InputIterator last)
1237
- { this->base_t::insert_equal(first, last); }
1459
+ BOOST_CONTAINER_FORCEINLINE void insert(InputIterator first, InputIterator last)
1460
+ { this->tree_t::insert_equal(first, last); }
1238
1461
 
1239
1462
  //! <b>Requires</b>: first, last are not iterators into *this and
1240
1463
  //! must be ordered according to the predicate.
@@ -1242,56 +1465,53 @@ class flat_multiset
1242
1465
  //! <b>Effects</b>: inserts each element from the range [first,last) .This function
1243
1466
  //! is more efficient than the normal range creation for ordered ranges.
1244
1467
  //!
1245
- //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
1246
- //! search time plus N*size() insertion time.
1468
+ //! <b>Complexity</b>: Linear.
1247
1469
  //!
1248
1470
  //! <b>Note</b>: Non-standard extension. If an element is inserted it might invalidate elements.
1249
1471
  template <class InputIterator>
1250
- void insert(ordered_range_t, InputIterator first, InputIterator last)
1251
- { this->base_t::insert_equal(ordered_range, first, last); }
1472
+ BOOST_CONTAINER_FORCEINLINE void insert(ordered_range_t, InputIterator first, InputIterator last)
1473
+ { this->tree_t::insert_equal(ordered_range, first, last); }
1252
1474
 
1253
1475
  #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1254
1476
  //! <b>Effects</b>: inserts each element from the range [il.begin(), il.end()).
1255
1477
  //!
1256
- //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
1257
- //! search time plus N*size() insertion time.
1478
+ //! <b>Complexity</b>: N log(N).
1258
1479
  //!
1259
1480
  //! <b>Note</b>: If an element is inserted it might invalidate elements.
1260
- void insert(std::initializer_list<value_type> il)
1261
- { this->base_t::insert_equal(il.begin(), il.end()); }
1481
+ BOOST_CONTAINER_FORCEINLINE void insert(std::initializer_list<value_type> il)
1482
+ { this->tree_t::insert_equal(il.begin(), il.end()); }
1262
1483
 
1263
1484
  //! <b>Requires</b>: Range [il.begin(), il.end()) must be ordered according to the predicate.
1264
1485
  //!
1265
1486
  //! <b>Effects</b>: inserts each element from the range [il.begin(), il.end()). This function
1266
1487
  //! is more efficient than the normal range creation for ordered ranges.
1267
1488
  //!
1268
- //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from il.begin() to il.end())
1269
- //! search time plus N*size() insertion time.
1489
+ //! <b>Complexity</b>: Linear.
1270
1490
  //!
1271
1491
  //! <b>Note</b>: Non-standard extension. If an element is inserted it might invalidate elements.
1272
- void insert(ordered_range_t, std::initializer_list<value_type> il)
1273
- { this->base_t::insert_equal(ordered_range, il.begin(), il.end()); }
1492
+ BOOST_CONTAINER_FORCEINLINE void insert(ordered_range_t, std::initializer_list<value_type> il)
1493
+ { this->tree_t::insert_equal(ordered_range, il.begin(), il.end()); }
1274
1494
  #endif
1275
1495
 
1276
- //! @copydoc ::boost::container::flat_multimap::merge(flat_multimap<Key, T, C2, Allocator>&)
1496
+ //! @copydoc ::boost::container::flat_multimap::merge(flat_multimap<Key, T, C2, AllocatorOrContainer>&)
1277
1497
  template<class C2>
1278
- BOOST_CONTAINER_FORCEINLINE void merge(flat_multiset<Key, C2, Allocator>& source)
1279
- { this->base_t::merge_equal(source.tree()); }
1498
+ BOOST_CONTAINER_FORCEINLINE void merge(flat_multiset<Key, C2, AllocatorOrContainer>& source)
1499
+ { this->tree_t::merge_equal(source.tree()); }
1280
1500
 
1281
- //! @copydoc ::boost::container::flat_multiset::merge(flat_multiset<Key, C2, Allocator>&)
1501
+ //! @copydoc ::boost::container::flat_multiset::merge(flat_multiset<Key, C2, AllocatorOrContainer>&)
1282
1502
  template<class C2>
1283
- BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG flat_multiset<Key, C2, Allocator> BOOST_RV_REF_END source)
1284
- { return this->merge(static_cast<flat_multiset<Key, C2, Allocator>&>(source)); }
1503
+ BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG flat_multiset<Key, C2, AllocatorOrContainer> BOOST_RV_REF_END source)
1504
+ { return this->merge(static_cast<flat_multiset<Key, C2, AllocatorOrContainer>&>(source)); }
1285
1505
 
1286
- //! @copydoc ::boost::container::flat_multimap::merge(flat_map<Key, T, C2, Allocator>&)
1506
+ //! @copydoc ::boost::container::flat_multimap::merge(flat_map<Key, T, C2, AllocatorOrContainer>&)
1287
1507
  template<class C2>
1288
- BOOST_CONTAINER_FORCEINLINE void merge(flat_set<Key, C2, Allocator>& source)
1289
- { this->base_t::merge_equal(source.tree()); }
1508
+ BOOST_CONTAINER_FORCEINLINE void merge(flat_set<Key, C2, AllocatorOrContainer>& source)
1509
+ { this->tree_t::merge_equal(source.tree()); }
1290
1510
 
1291
- //! @copydoc ::boost::container::flat_multiset::merge(flat_set<Key, C2, Allocator>&)
1511
+ //! @copydoc ::boost::container::flat_multiset::merge(flat_set<Key, C2, AllocatorOrContainer>&)
1292
1512
  template<class C2>
1293
- BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG flat_set<Key, C2, Allocator> BOOST_RV_REF_END source)
1294
- { return this->merge(static_cast<flat_set<Key, C2, Allocator>&>(source)); }
1513
+ BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG flat_set<Key, C2, AllocatorOrContainer> BOOST_RV_REF_END source)
1514
+ { return this->merge(static_cast<flat_set<Key, C2, AllocatorOrContainer>&>(source)); }
1295
1515
 
1296
1516
  #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1297
1517
 
@@ -1307,7 +1527,7 @@ class flat_multiset
1307
1527
  //! @copydoc ::boost::container::flat_set::swap
1308
1528
  void swap(flat_multiset& x)
1309
1529
  BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value
1310
- && boost::container::container_detail::is_nothrow_swappable<Compare>::value );
1530
+ && boost::container::dtl::is_nothrow_swappable<Compare>::value );
1311
1531
 
1312
1532
  //! @copydoc ::boost::container::flat_set::clear
1313
1533
  void clear() BOOST_NOEXCEPT_OR_NOTHROW;
@@ -1392,17 +1612,46 @@ class flat_multiset
1392
1612
  //! <b>Complexity</b>: Constant.
1393
1613
  friend void swap(flat_multiset& x, flat_multiset& y);
1394
1614
 
1615
+ //! <b>Effects</b>: Extracts the internal sequence container.
1616
+ //!
1617
+ //! <b>Complexity</b>: Same as the move constructor of sequence_type, usually constant.
1618
+ //!
1619
+ //! <b>Postcondition</b>: this->empty()
1620
+ //!
1621
+ //! <b>Throws</b>: If secuence_type's move constructor throws
1622
+ sequence_type extract_sequence();
1623
+
1395
1624
  #endif //#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
1396
1625
 
1626
+ //! <b>Effects</b>: Discards the internally hold sequence container and adopts the
1627
+ //! one passed externally using the move assignment.
1628
+ //!
1629
+ //! <b>Complexity</b>: Assuming O(1) move assignment, O(NlogN) with N = seq.size()
1630
+ //!
1631
+ //! <b>Throws</b>: If the comparison or the move constructor throws
1632
+ BOOST_CONTAINER_FORCEINLINE void adopt_sequence(BOOST_RV_REF(sequence_type) seq)
1633
+ { this->tree_t::adopt_sequence_equal(boost::move(seq)); }
1634
+
1635
+ //! <b>Requires</b>: seq shall be ordered according to this->compare()
1636
+ //!
1637
+ //! <b>Effects</b>: Discards the internally hold sequence container and adopts the
1638
+ //! one passed externally using the move assignment.
1639
+ //!
1640
+ //! <b>Complexity</b>: Assuming O(1) move assignment, O(1)
1641
+ //!
1642
+ //! <b>Throws</b>: If the move assignment throws
1643
+ BOOST_CONTAINER_FORCEINLINE void adopt_sequence(ordered_range_t, BOOST_RV_REF(sequence_type) seq)
1644
+ { this->tree_t::adopt_sequence_equal(ordered_range_t(), boost::move(seq)); }
1645
+
1397
1646
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
1398
1647
  private:
1399
1648
  template <class KeyType>
1400
- iterator priv_insert(BOOST_FWD_REF(KeyType) x)
1401
- { return this->base_t::insert_equal(::boost::forward<KeyType>(x)); }
1649
+ BOOST_CONTAINER_FORCEINLINE iterator priv_insert(BOOST_FWD_REF(KeyType) x)
1650
+ { return this->tree_t::insert_equal(::boost::forward<KeyType>(x)); }
1402
1651
 
1403
1652
  template <class KeyType>
1404
- iterator priv_insert(const_iterator p, BOOST_FWD_REF(KeyType) x)
1405
- { return this->base_t::insert_equal(p, ::boost::forward<KeyType>(x)); }
1653
+ BOOST_CONTAINER_FORCEINLINE iterator priv_insert(const_iterator p, BOOST_FWD_REF(KeyType) x)
1654
+ { return this->tree_t::insert_equal(p, ::boost::forward<KeyType>(x)); }
1406
1655
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
1407
1656
  };
1408
1657
 
@@ -1412,11 +1661,11 @@ class flat_multiset
1412
1661
 
1413
1662
  //!has_trivial_destructor_after_move<> == true_type
1414
1663
  //!specialization for optimizations
1415
- template <class Key, class Compare, class Allocator>
1416
- struct has_trivial_destructor_after_move<boost::container::flat_multiset<Key, Compare, Allocator> >
1664
+ template <class Key, class Compare, class AllocatorOrContainer>
1665
+ struct has_trivial_destructor_after_move<boost::container::flat_multiset<Key, Compare, AllocatorOrContainer> >
1417
1666
  {
1418
- typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
1419
- static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
1667
+ typedef typename ::boost::container::allocator_traits<AllocatorOrContainer>::pointer pointer;
1668
+ static const bool value = ::boost::has_trivial_destructor_after_move<AllocatorOrContainer>::value &&
1420
1669
  ::boost::has_trivial_destructor_after_move<pointer>::value &&
1421
1670
  ::boost::has_trivial_destructor_after_move<Compare>::value;
1422
1671
  };