passenger 5.3.3 → 5.3.4

Sign up to get free protection for your applications and to get access to all the features.
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
  };