passenger 6.0.8 → 6.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1145) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +29 -0
  3. data/CONTRIBUTORS +5 -0
  4. data/src/agent/Core/Config.h +1 -1
  5. data/src/agent/Core/Controller/Config.h +1 -1
  6. data/src/agent/Shared/ApplicationPoolApiKey.h +2 -0
  7. data/src/agent/Watchdog/Config.h +1 -1
  8. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +27 -27
  9. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +1 -1
  10. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +2 -2
  11. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +19 -19
  12. data/src/cxx_supportlib/Constants.h +1 -1
  13. data/src/cxx_supportlib/DataStructures/HashedStaticString.h +2 -0
  14. data/src/cxx_supportlib/FileDescriptor.h +8 -0
  15. data/src/cxx_supportlib/StaticString.h +2 -0
  16. data/src/cxx_supportlib/Utils/HttpConstants.h +1 -1
  17. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +3 -0
  18. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +2 -0
  19. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format_all.hpp +2 -0
  20. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +1 -1
  21. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +240 -11
  22. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +1 -1
  23. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +5 -5
  24. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +9 -9
  25. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +1 -1
  26. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +21 -13
  27. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +13 -13
  28. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +1 -1
  29. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +21 -13
  30. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +20 -13
  31. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +18 -18
  32. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +29 -21
  33. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +22 -21
  34. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +58 -51
  35. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +1 -1
  36. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +1 -1
  37. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +20 -13
  38. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +1 -1
  39. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +1 -1
  40. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +16 -16
  41. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +5 -5
  42. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +25 -25
  43. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +1 -1
  44. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  45. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +1 -1
  46. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  47. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +1 -1
  48. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +1 -1
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +13 -13
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +1 -1
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +19 -19
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +1 -1
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +5 -5
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +3 -3
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +1 -1
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +1 -1
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +5 -1
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +1 -1
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +1 -1
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +1 -1
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +1 -1
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +1 -1
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +58 -15
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +1 -1
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -1
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +1 -1
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +1 -1
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +1 -1
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +1 -1
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +1 -1
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +1 -1
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +1 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +3 -2
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +1 -1
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -1
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +1 -1
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +1 -1
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +1 -1
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +1 -1
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +1 -1
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +1 -1
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +3 -3
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +1 -1
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +1 -1
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +1 -1
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +88 -12
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +1 -1
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +1 -1
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +1 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +1 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +10 -8
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +1 -1
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +8 -4
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +1 -1
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +1 -1
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +1 -1
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +1 -1
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +6 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +1 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +1 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +1 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +13 -11
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +7 -40
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +25 -1
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +3 -33
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +29 -5
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +37 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +1 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +4 -7
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +1 -1
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +1 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +1 -1
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +1 -1
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +1 -1
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +1 -1
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +1 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +1 -1
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +7 -1
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +1 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +1 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +1 -1
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +1 -1
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +1 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +1 -1
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +1 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +1 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +3 -5
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +11 -2
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +3 -3
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +7 -7
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +16 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +2 -5
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +1 -1
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +2 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +1 -1
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +2 -2
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -1
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +8 -1
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +4 -5
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +5 -5
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +10 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +5 -1
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +9 -2
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +1 -1
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +1 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +9 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +1 -1
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +1 -1
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +1 -1
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +1 -1
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +5 -5
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +1 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +107 -19
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +194 -112
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +1 -1
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +283 -83
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +218 -70
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +47 -42
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +287 -90
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +39 -36
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +62 -14
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +29 -9
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +1 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +1 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +1 -1
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +1 -1
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +67 -48
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +39 -25
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +1 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +1 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +1 -1
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +281 -82
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +62 -14
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +216 -70
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +7 -3
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +1 -1
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +1 -1
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +215 -70
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +14 -17
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +1 -1
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +1 -1
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +7 -10
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +7 -10
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +7 -10
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +7 -10
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +21 -21
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +1 -1
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +1 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +34 -19
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +137 -0
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +245 -0
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +1 -1
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +1 -1
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +1 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +1 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +4 -4
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +3 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +3 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +13 -13
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +4 -2
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +19 -19
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +13 -9
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +1 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +13 -9
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +1 -2
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +1 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +3 -3
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +6 -2
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +1 -1
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +1 -1
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +13 -9
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +56 -44
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +2 -2
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +106 -70
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +2 -1
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +8 -7
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +2 -1
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +1 -1
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +1 -1
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +1 -2
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +6 -2
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +1 -1
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +14 -14
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +1 -1
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +56 -44
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +2 -2
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +21 -1
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +1 -1
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +23 -1
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +21 -1
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +1 -1
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +1 -1
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +47 -6
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +1 -1
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +1 -1
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +1 -1
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +32 -5
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +51 -5
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +1 -1
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +1 -1
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +1 -1
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +1 -1
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +1 -1
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +1 -1
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +1 -1
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +2 -2
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +1 -1
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +1 -1
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +1 -1
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +1 -1
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +1 -1
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +1 -1
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +1 -1
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +1 -1
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +1 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +1 -1
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +1 -1
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +1 -1
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +1 -1
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +1 -1
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +1 -1
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +1 -1
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -1
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +1 -1
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +11 -10
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +17 -6
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +1 -1
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +1 -1
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +1 -1
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +5 -5
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +235 -157
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +79 -51
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +55 -43
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +1 -1
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +106 -70
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +1 -1
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +136 -89
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +100 -58
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +1 -1
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +1 -1
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +1 -1
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +7 -7
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -1
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +1 -1
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +1 -1
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +1 -1
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +1 -1
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +1 -1
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +2 -1
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +1 -1
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +1 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +1 -1
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +1 -1
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +1 -1
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +1 -1
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +1 -1
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +1 -1
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +1 -1
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +1 -1
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +1 -1
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +1 -1
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -1
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +55 -23
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +1 -1
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +23 -1
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -1
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +1 -1
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +21 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +1 -1
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +1 -1
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +1 -1
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +1 -1
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +7 -3
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +1 -1
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +1 -1
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +1 -1
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +1 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +1 -1
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +1 -1
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +1 -1
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +1 -1
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +1 -1
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +1 -1
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +1 -1
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +1 -1
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +1 -1
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +1 -1
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +1 -1
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +1 -1
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +1 -1
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +1 -1
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +1 -1
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +1 -1
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +1 -1
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +1 -1
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +3 -2
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +1 -1
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +1 -1
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +1 -1
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +3 -11
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +3 -3
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +10 -10
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +10 -10
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +6 -6
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +6 -6
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +1 -1
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +1 -1
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +9 -9
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +1 -1
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +1 -1
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +55 -43
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +1 -1
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  520. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +6 -0
  521. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +6 -6
  522. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +4 -4
  523. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +32 -32
  524. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +15 -15
  525. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +25 -1
  526. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +13 -0
  527. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +3 -23
  528. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +18 -18
  529. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +154 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +12 -0
  531. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +52 -8
  532. data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +39 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +4 -320
  534. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +1 -1
  535. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +6 -6
  536. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +2 -2
  537. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +21 -0
  538. data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +7 -0
  539. data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +1 -1
  540. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +214 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +215 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +47 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +59 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx98.hpp +23 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +1 -1
  546. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +11 -0
  547. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +186 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +37 -2
  549. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +11 -4
  550. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +21 -1
  551. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +45 -1
  552. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +8 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +10 -7
  554. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +9 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +6 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +123 -71
  557. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +4 -3
  558. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +117 -45
  559. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +28 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +1 -0
  561. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -3
  562. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +3 -3
  563. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +142 -36
  564. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +100 -31
  565. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +24 -24
  566. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +141 -90
  567. data/src/cxx_supportlib/vendor-modified/boost/container/detail/guards_dended.hpp +198 -0
  568. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +10 -0
  569. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +35 -0
  570. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +12 -8
  571. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +4 -15
  572. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +22 -1
  573. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +1 -1
  574. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +126 -92
  575. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -0
  576. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +4 -14
  577. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +30 -0
  578. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +3000 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +237 -169
  580. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +10 -28
  581. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +58 -29
  582. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +84 -80
  583. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +41 -0
  584. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +51 -0
  585. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
  586. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +2 -3
  587. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +21 -35
  588. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +51 -26
  589. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +1 -1
  590. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +109 -57
  591. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +4 -1
  592. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +184 -105
  593. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +123 -15
  594. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +368 -384
  595. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +1 -3
  596. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +1 -1
  597. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +1 -1
  598. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +102 -134
  599. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +581 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +199 -0
  601. data/src/cxx_supportlib/vendor-modified/boost/core/detail/splitmix64.hpp +54 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +42 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +36 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +4 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_iterator.hpp +8 -8
  606. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_iterator.hpp +8 -8
  607. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +21 -0
  608. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +55 -37
  609. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +2 -1
  610. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +0 -3
  611. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +3 -3
  612. data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +2 -2
  613. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor.hpp +2 -2
  614. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +2 -2
  615. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +1 -1
  616. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +1 -1
  617. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +1 -1
  618. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +2 -2
  619. data/src/cxx_supportlib/vendor-modified/boost/integer/mod_inverse.hpp +1 -1
  620. data/src/cxx_supportlib/vendor-modified/boost/integer/static_log2.hpp +2 -2
  621. data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +2 -2
  622. data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +2 -2
  623. data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +2 -2
  624. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +8 -16
  625. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +4 -5
  626. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +2 -1
  627. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +1 -2
  628. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +94 -0
  629. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +2 -2
  630. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +2 -0
  631. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/twin.hpp +49 -0
  632. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/value_functors.hpp +42 -0
  633. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +1 -1
  634. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +11 -5
  635. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +11 -11
  636. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +7 -15
  637. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +18 -22
  638. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +2 -4
  639. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +2 -2
  640. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +7 -7
  641. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +1 -1
  642. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +38 -38
  643. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +1 -1
  644. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +13 -16
  645. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +1 -1
  646. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +2 -2
  647. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +10 -10
  648. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +1 -1
  649. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +5 -5
  650. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +1 -1
  651. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +3 -7
  652. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +10 -121
  653. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +5 -1
  654. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +4 -8
  655. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +2 -4
  656. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +3 -2
  657. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +31 -14
  658. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +4 -48
  659. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +30 -3
  660. data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +12 -0
  661. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +224 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +253 -43
  663. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +0 -26
  664. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +5 -5
  665. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/enum.hpp +12 -0
  666. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/params.hpp +12 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +2 -2
  668. data/src/cxx_supportlib/vendor-modified/boost/mpl/string.hpp +6 -6
  669. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +3 -4
  670. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +3 -1
  671. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/cast.hpp +1 -1
  672. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/converter_policies.hpp +4 -5
  673. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/converter.hpp +1 -1
  674. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/meta.hpp +1 -1
  675. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +2 -2
  676. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +1 -1
  677. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +8 -1
  678. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +5 -5
  679. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/default.hpp +11 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/maybe.hpp +2 -2
  681. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/name.hpp +1 -1
  682. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/item.hpp +2 -2
  683. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_arg_list.hpp +4 -4
  684. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +2 -2
  685. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_cast.hpp +1 -1
  686. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp +1 -1
  687. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/specification.hpp +2 -2
  688. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_binary.hpp +1 -1
  689. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_nullary.hpp +1 -1
  690. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +1 -1
  691. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +2 -2
  692. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +12 -3
  693. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +3 -3
  694. data/src/cxx_supportlib/vendor-modified/boost/parameter/config.hpp +1 -1
  695. data/src/cxx_supportlib/vendor-modified/boost/parameter/macros.hpp +1 -1
  696. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +1 -1
  697. data/src/cxx_supportlib/vendor-modified/boost/parameter/parameters.hpp +6 -6
  698. data/src/cxx_supportlib/vendor-modified/boost/pool/object_pool.hpp +2 -2
  699. data/src/cxx_supportlib/vendor-modified/boost/pool/pool_alloc.hpp +1 -1
  700. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -1
  701. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +5 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +10 -0
  703. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +5 -0
  704. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +5 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/e2k.h +54 -0
  706. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +5 -0
  707. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +5 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +10 -0
  709. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +5 -0
  710. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +55 -4
  711. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +5 -0
  712. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +5 -0
  713. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/riscv.h +5 -0
  714. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +10 -0
  715. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +14 -2
  716. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +13 -0
  717. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +5 -0
  718. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +5 -0
  719. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +5 -0
  720. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +7 -2
  721. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +5 -0
  722. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +1 -1
  723. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +1 -1
  724. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  725. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +1 -0
  726. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +1 -0
  727. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +1 -0
  728. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +1 -0
  729. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +1 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/predef/other.h +3 -2
  731. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +7 -10
  732. data/src/cxx_supportlib/vendor-modified/boost/predef/other/wordsize.h +73 -0
  733. data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +0 -1
  734. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  735. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/add.hpp +54 -1
  736. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/dec.hpp +33 -0
  737. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/is_1_number.hpp +21 -0
  738. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/is_maximum_number.hpp +22 -0
  739. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/is_minimum_number.hpp +21 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/maximum_number.hpp +19 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/div.hpp +37 -1
  742. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/inc.hpp +33 -0
  743. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/dec_1024.hpp +531 -0
  744. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/dec_256.hpp +276 -0
  745. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/dec_512.hpp +275 -0
  746. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/inc_1024.hpp +536 -0
  747. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/inc_256.hpp +275 -0
  748. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/inc_512.hpp +280 -0
  749. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/mod.hpp +37 -1
  750. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/mul.hpp +60 -1
  751. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/sub.hpp +51 -1
  752. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +1 -1
  753. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/enum.hpp +17 -1
  754. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/insert.hpp +71 -0
  755. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/remove.hpp +66 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/replace.hpp +58 -0
  757. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/limits/not_equal_1024.hpp +1044 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/limits/not_equal_256.hpp +793 -0
  759. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/limits/not_equal_512.hpp +532 -0
  760. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/not_equal.hpp +44 -1
  761. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +16 -33
  762. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/limits.hpp +136 -3
  763. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/deduce_d.hpp +27 -0
  764. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/dmc/while.hpp +2 -3
  765. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/limits/while_1024.hpp +1044 -0
  766. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/limits/while_256.hpp +533 -0
  767. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/limits/while_512.hpp +532 -0
  768. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/while.hpp +27 -0
  769. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/limits/while_1024.hpp +1044 -0
  770. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/limits/while_256.hpp +533 -0
  771. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/limits/while_512.hpp +532 -0
  772. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/while.hpp +27 -0
  773. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/limits/while_1024.hpp +531 -0
  774. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/limits/while_256.hpp +275 -0
  775. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/limits/while_512.hpp +275 -0
  776. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/while.hpp +75 -0
  777. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/auto_rec.hpp +41 -0
  778. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/dmc/auto_rec.hpp +2 -2
  779. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/limits/auto_rec_1024.hpp +532 -0
  780. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/limits/auto_rec_256.hpp +280 -0
  781. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/limits/auto_rec_512.hpp +276 -0
  782. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/intercept.hpp +29 -0
  783. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty.hpp +0 -37
  784. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +0 -4
  785. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/limits/intercept_1024.hpp +530 -0
  786. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/limits/intercept_256.hpp +273 -0
  787. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/limits/intercept_512.hpp +274 -0
  788. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/overload.hpp +1 -3
  789. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward1.hpp +27 -0
  790. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward2.hpp +27 -0
  791. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward3.hpp +27 -0
  792. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward4.hpp +27 -0
  793. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward5.hpp +27 -0
  794. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward1_1024.hpp +2573 -0
  795. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward1_256.hpp +1296 -0
  796. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward1_512.hpp +1293 -0
  797. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward2_1024.hpp +2573 -0
  798. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward2_256.hpp +1296 -0
  799. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward2_512.hpp +1293 -0
  800. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward3_1024.hpp +2573 -0
  801. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward3_256.hpp +1296 -0
  802. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward3_512.hpp +1293 -0
  803. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward4_1024.hpp +2573 -0
  804. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward4_256.hpp +1296 -0
  805. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward4_512.hpp +1293 -0
  806. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward5_1024.hpp +2573 -0
  807. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward5_256.hpp +1296 -0
  808. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward5_512.hpp +1293 -0
  809. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse1_1024.hpp +2571 -0
  810. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse1_256.hpp +1296 -0
  811. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse1_512.hpp +1291 -0
  812. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse2_1024.hpp +2571 -0
  813. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse2_256.hpp +1296 -0
  814. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse2_512.hpp +1293 -0
  815. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse3_1024.hpp +2571 -0
  816. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse3_256.hpp +1296 -0
  817. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse3_512.hpp +1293 -0
  818. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse4_1024.hpp +2571 -0
  819. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse4_256.hpp +1296 -0
  820. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse4_512.hpp +1293 -0
  821. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse5_1024.hpp +2571 -0
  822. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse5_256.hpp +1296 -0
  823. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse5_512.hpp +1293 -0
  824. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse1.hpp +25 -0
  825. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse2.hpp +25 -0
  826. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse3.hpp +25 -0
  827. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse4.hpp +25 -0
  828. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse5.hpp +25 -0
  829. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/local_1024.hpp +1549 -0
  830. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/local_256.hpp +782 -0
  831. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/local_512.hpp +781 -0
  832. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/rlocal_1024.hpp +1549 -0
  833. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/rlocal_256.hpp +782 -0
  834. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/rlocal_512.hpp +781 -0
  835. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/local.hpp +27 -0
  836. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/rlocal.hpp +25 -0
  837. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/dmc/fold_left.hpp +3 -2
  838. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/fold_left.hpp +28 -0
  839. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/fold_right.hpp +29 -0
  840. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_left_1024.hpp +1044 -0
  841. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_left_256.hpp +533 -0
  842. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_left_512.hpp +532 -0
  843. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_right_1024.hpp +1557 -0
  844. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_right_256.hpp +791 -0
  845. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_right_512.hpp +789 -0
  846. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/fold_left.hpp +28 -0
  847. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/fold_right.hpp +26 -0
  848. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_left_1024.hpp +532 -0
  849. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_left_256.hpp +275 -0
  850. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_left_512.hpp +276 -0
  851. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_right_1024.hpp +532 -0
  852. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_right_256.hpp +275 -0
  853. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_right_512.hpp +276 -0
  854. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/enum.hpp +13 -1
  855. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/fold_left.hpp +60 -0
  856. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/fold_right.hpp +44 -0
  857. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/for_each_product.hpp +25 -6
  858. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/limits/fold_left_1024.hpp +531 -0
  859. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/limits/fold_left_256.hpp +275 -0
  860. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/limits/fold_left_512.hpp +275 -0
  861. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/reverse.hpp +35 -0
  862. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/size.hpp +56 -1
  863. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +5 -72
  864. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/bool.hpp +22 -0
  865. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/limits/bool_1024.hpp +531 -0
  866. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/limits/bool_256.hpp +275 -0
  867. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/limits/bool_512.hpp +275 -0
  868. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/is_begin_parens.hpp +1 -5
  869. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/remove_parens.hpp +0 -4
  870. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/deduce_r.hpp +27 -0
  871. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/dmc/for.hpp +3 -2
  872. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/for.hpp +26 -0
  873. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/limits/for_1024.hpp +1044 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/limits/for_256.hpp +533 -0
  875. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/limits/for_512.hpp +532 -0
  876. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/for.hpp +28 -0
  877. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/limits/for_1024.hpp +1044 -0
  878. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/limits/for_256.hpp +533 -0
  879. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/limits/for_512.hpp +532 -0
  880. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/msvc/for.hpp +1 -0
  881. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +114 -0
  882. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/for_1024.hpp +531 -0
  883. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/for_256.hpp +275 -0
  884. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/for_512.hpp +275 -0
  885. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/repeat_1024.hpp +1557 -0
  886. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/repeat_256.hpp +791 -0
  887. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/repeat_512.hpp +789 -0
  888. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/repeat.hpp +22 -0
  889. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/repeat_from_to.hpp +27 -0
  890. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +6 -11
  891. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/limits/split_1024.hpp +530 -0
  892. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/limits/split_256.hpp +272 -0
  893. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/limits/split_512.hpp +274 -0
  894. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/split.hpp +23 -0
  895. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/elem.hpp +23 -0
  896. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/enum.hpp +23 -0
  897. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/fold_left.hpp +52 -0
  898. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/fold_right.hpp +37 -0
  899. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/elem_1024.hpp +530 -0
  900. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/elem_256.hpp +272 -0
  901. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/elem_512.hpp +274 -0
  902. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/enum_1024.hpp +530 -0
  903. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/enum_256.hpp +272 -0
  904. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/enum_512.hpp +274 -0
  905. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_left_1024.hpp +1556 -0
  906. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_left_256.hpp +1053 -0
  907. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_left_512.hpp +788 -0
  908. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_right_1024.hpp +530 -0
  909. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_right_256.hpp +273 -0
  910. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_right_512.hpp +274 -0
  911. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/size_1024.hpp +1043 -0
  912. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/size_256.hpp +532 -0
  913. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/size_512.hpp +531 -0
  914. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +9 -3
  915. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/size.hpp +23 -0
  916. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/variadic_seq_to_seq.hpp +0 -2
  917. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/stringize.hpp +0 -4
  918. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +2 -2
  919. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/eat.hpp +4 -18
  920. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +11 -157
  921. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +0 -5
  922. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/reverse_128.hpp +403 -0
  923. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/reverse_256.hpp +1171 -0
  924. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/reverse_64.hpp +83 -0
  925. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_list_128.hpp +595 -0
  926. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_list_256.hpp +1747 -0
  927. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_list_64.hpp +83 -0
  928. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_128.hpp +403 -0
  929. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +1171 -0
  930. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_64.hpp +84 -0
  931. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +0 -5
  932. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +0 -5
  933. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +0 -5
  934. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +0 -6
  935. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +17 -39
  936. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +0 -5
  937. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +0 -5
  938. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +38 -25
  939. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/size.hpp +13 -6
  940. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_array.hpp +15 -12
  941. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +37 -25
  942. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +38 -24
  943. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/has_opt.hpp +1 -1
  944. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +2 -2
  945. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/elem.hpp +93 -71
  946. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +1 -1
  947. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/elem_128.hpp +275 -0
  948. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/elem_256.hpp +723 -0
  949. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/elem_64.hpp +81 -0
  950. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/size_128.hpp +47 -0
  951. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/size_256.hpp +53 -0
  952. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/size_64.hpp +23 -0
  953. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/size.hpp +39 -4
  954. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_array.hpp +15 -9
  955. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_list.hpp +9 -2
  956. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_seq.hpp +1 -3
  957. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_tuple.hpp +1 -3
  958. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/wstringize.hpp +0 -4
  959. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +1 -0
  960. data/src/cxx_supportlib/vendor-modified/boost/random/additive_combine.hpp +2 -2
  961. data/src/cxx_supportlib/vendor-modified/boost/random/detail/gray_coded_qrng.hpp +29 -5
  962. data/src/cxx_supportlib/vendor-modified/boost/random/detail/int_float_pair.hpp +3 -4
  963. data/src/cxx_supportlib/vendor-modified/boost/random/detail/mixmax_skip_N17.ipp +287 -0
  964. data/src/cxx_supportlib/vendor-modified/boost/random/detail/niederreiter_base2_table.hpp +1 -0
  965. data/src/cxx_supportlib/vendor-modified/boost/random/detail/operators.hpp +1 -1
  966. data/src/cxx_supportlib/vendor-modified/boost/random/detail/qrng_base.hpp +5 -5
  967. data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed.hpp +9 -11
  968. data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed_impl.hpp +13 -14
  969. data/src/cxx_supportlib/vendor-modified/boost/random/detail/sobol_table.hpp +1 -0
  970. data/src/cxx_supportlib/vendor-modified/boost/random/discard_block.hpp +2 -2
  971. data/src/cxx_supportlib/vendor-modified/boost/random/generate_canonical.hpp +2 -3
  972. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +3 -3
  973. data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +3 -3
  974. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +2 -3
  975. data/src/cxx_supportlib/vendor-modified/boost/random/lagged_fibonacci.hpp +4 -4
  976. data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +5 -7
  977. data/src/cxx_supportlib/vendor-modified/boost/random/linear_feedback_shift.hpp +3 -3
  978. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +2 -2
  979. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +313 -0
  980. data/src/cxx_supportlib/vendor-modified/boost/random/niederreiter_base2.hpp +2 -2
  981. data/src/cxx_supportlib/vendor-modified/boost/random/random_device.hpp +2 -2
  982. data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_order.hpp +2 -2
  983. data/src/cxx_supportlib/vendor-modified/boost/random/sobol.hpp +3 -2
  984. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +4 -4
  985. data/src/cxx_supportlib/vendor-modified/boost/random/traits.hpp +3 -3
  986. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +7 -7
  987. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +2 -3
  988. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_smallint.hpp +4 -5
  989. data/src/cxx_supportlib/vendor-modified/boost/random/xor_combine.hpp +4 -2
  990. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +7 -7
  991. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +4 -0
  992. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +78 -73
  993. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +97 -113
  994. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +4 -75
  995. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +4 -147
  996. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +8 -761
  997. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +4 -0
  998. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +2 -0
  999. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +8 -9
  1000. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +20 -19
  1001. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +13 -13
  1002. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +342 -42
  1003. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +107 -24
  1004. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -117
  1005. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +1516 -0
  1006. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +5 -5
  1007. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +8 -8
  1008. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +39 -1
  1009. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +171 -0
  1010. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +127 -0
  1011. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +13 -4
  1012. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +1 -1
  1013. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +39 -41
  1014. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +6 -6
  1015. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +1 -1
  1016. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +3 -1
  1017. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -36
  1018. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +3 -3
  1019. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +35 -4
  1020. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +2 -0
  1021. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +638 -22
  1022. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +1 -1
  1023. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +790 -0
  1024. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +521 -37
  1025. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +734 -0
  1026. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +1575 -0
  1027. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +3117 -0
  1028. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +474 -0
  1029. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +59 -0
  1030. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +1040 -0
  1031. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +195 -0
  1032. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +59 -0
  1033. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +1402 -0
  1034. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/indexed_bit_flag.hpp +54 -0
  1035. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +84 -0
  1036. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +32 -0
  1037. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +156 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +667 -0
  1039. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +175 -0
  1040. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +160 -0
  1041. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +105 -0
  1042. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +576 -0
  1043. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +915 -0
  1044. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +1872 -0
  1045. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/primary_transform.hpp +120 -0
  1046. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +158 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +106 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +1124 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +73 -0
  1050. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +98 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +173 -0
  1052. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +92 -0
  1053. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +71 -0
  1054. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +213 -0
  1055. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +77 -0
  1056. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +103 -0
  1057. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +152 -0
  1058. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +255 -0
  1059. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +130 -0
  1060. data/src/cxx_supportlib/vendor-modified/boost/{libs/regex/src/regex_traits_defaults.cpp → regex/v5/regex_traits_defaults.hpp} +719 -415
  1061. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +159 -0
  1062. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +299 -0
  1063. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +382 -0
  1064. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +105 -0
  1065. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +177 -0
  1066. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +312 -0
  1067. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +864 -0
  1068. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +1176 -0
  1069. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +4 -0
  1070. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +1 -1
  1071. data/src/cxx_supportlib/vendor-modified/boost/system/detail/cerrno.hpp +329 -0
  1072. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +16 -0
  1073. data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +32 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/system/detail/errc.hpp +126 -0
  1075. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +189 -0
  1076. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +108 -0
  1077. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +215 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +163 -0
  1079. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +80 -58
  1080. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +108 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/system/detail/{system_category_posix.hpp → is_generic_value.hpp} +7 -14
  1082. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +110 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +83 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/system/detail/throws.hpp +59 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/system/detail/{std_interoperability.hpp → to_std_category.hpp} +11 -2
  1086. data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +50 -0
  1087. data/src/cxx_supportlib/vendor-modified/boost/system/error_category.hpp +13 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +7 -925
  1089. data/src/cxx_supportlib/vendor-modified/boost/system/error_condition.hpp +13 -0
  1090. data/src/cxx_supportlib/vendor-modified/boost/system/generic_category.hpp +13 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/system/is_error_code_enum.hpp +30 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/system/is_error_condition_enum.hpp +30 -0
  1093. data/src/cxx_supportlib/vendor-modified/boost/system/system_category.hpp +14 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +1 -1
  1095. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +26 -0
  1096. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +37 -39
  1097. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
  1098. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +1 -1
  1099. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +1 -1
  1100. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +247 -168
  1101. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +27 -27
  1102. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +1 -1
  1103. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +27 -27
  1104. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +242 -217
  1105. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +1 -1
  1106. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +1 -1
  1107. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_trivially_copyable.hpp +4 -0
  1108. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +1 -1
  1109. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +3 -3
  1110. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +2 -2
  1111. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +1 -1
  1112. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +1 -1
  1113. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +1 -1
  1114. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +4 -4
  1115. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +1 -1
  1116. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +8 -8
  1117. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +8 -8
  1118. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1119. data/src/ruby_supportlib/phusion_passenger.rb +5 -5
  1120. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +3 -0
  1121. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +5 -0
  1122. metadata +223 -28
  1123. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +0 -25
  1124. data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +0 -60
  1125. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +0 -206
  1126. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cpp_regex_traits.cpp +0 -117
  1127. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +0 -667
  1128. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/instances.cpp +0 -32
  1129. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_raw_buffer.cpp +0 -72
  1130. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +0 -314
  1131. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/winstances.cpp +0 -35
  1132. data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +0 -1038
  1133. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +0 -581
  1134. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/round_fwd.hpp +0 -93
  1135. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +0 -640
  1136. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +0 -1712
  1137. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +0 -194
  1138. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +0 -489
  1139. data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +0 -182
  1140. data/src/cxx_supportlib/vendor-modified/boost/math/tools/real_cast.hpp +0 -31
  1141. data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +0 -105
  1142. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +0 -557
  1143. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +0 -236
  1144. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp.orig +0 -841
  1145. data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp.orig +0 -54
@@ -21,11 +21,105 @@
21
21
 
22
22
  #include <boost/container/detail/config_begin.hpp>
23
23
  #include <boost/container/detail/workaround.hpp>
24
+ #include <boost/core/ignore_unused.hpp>
24
25
 
25
26
  #ifndef BOOST_NO_EXCEPTIONS
27
+ #include <exception> //for std exception base
28
+
29
+ # if defined(BOOST_CONTAINER_USE_STD_EXCEPTIONS)
26
30
  #include <stdexcept> //for std exception types
27
31
  #include <string> //for implicit std::string conversion
28
32
  #include <new> //for std::bad_alloc
33
+
34
+ typedef std::bad_alloc bad_alloc_t;
35
+ typedef std::out_of_range out_of_range_t;
36
+ typedef std::out_of_range length_error_t;
37
+ typedef std::logic_error logic_error_t;
38
+ typedef std::runtime_error runtime_error_t;
39
+
40
+ # else //!BOOST_CONTAINER_USE_STD_EXCEPTIONS
41
+
42
+ namespace boost {
43
+ namespace container {
44
+
45
+ class exception
46
+ : public ::std::exception
47
+ {
48
+ typedef ::std::exception std_exception_t;
49
+
50
+ public:
51
+
52
+ //msg must be a static string (guaranteed by callers)
53
+ explicit exception(const char *msg)
54
+ : std_exception_t(), m_msg(msg)
55
+ {}
56
+
57
+ virtual const char *what() const BOOST_NOEXCEPT_OR_NOTHROW
58
+ { return m_msg ? m_msg : "unknown boost::container exception"; }
59
+
60
+ private:
61
+ const char *m_msg;
62
+ };
63
+
64
+ class bad_alloc
65
+ : public exception
66
+ {
67
+ public:
68
+ bad_alloc()
69
+ : exception("boost::container::bad_alloc thrown")
70
+ {}
71
+ };
72
+
73
+ typedef bad_alloc bad_alloc_t;
74
+
75
+ class out_of_range
76
+ : public exception
77
+ {
78
+ public:
79
+ explicit out_of_range(const char *msg)
80
+ : exception(msg)
81
+ {}
82
+ };
83
+
84
+ typedef out_of_range out_of_range_t;
85
+
86
+ class length_error
87
+ : public exception
88
+ {
89
+ public:
90
+ explicit length_error(const char *msg)
91
+ : exception(msg)
92
+ {}
93
+ };
94
+
95
+ typedef out_of_range length_error_t;
96
+
97
+ class logic_error
98
+ : public exception
99
+ {
100
+ public:
101
+ explicit logic_error(const char *msg)
102
+ : exception(msg)
103
+ {}
104
+ };
105
+
106
+ typedef logic_error logic_error_t;
107
+
108
+ class runtime_error
109
+ : public exception
110
+ {
111
+ public:
112
+ explicit runtime_error(const char *msg)
113
+ : exception(msg)
114
+ {}
115
+ };
116
+
117
+ typedef runtime_error runtime_error_t;
118
+
119
+ } // namespace boost {
120
+ } // namespace container {
121
+
122
+ # endif
29
123
  #else
30
124
  #include <boost/assert.hpp>
31
125
  #include <cstdlib> //for std::abort
@@ -51,41 +145,35 @@ namespace container {
51
145
 
52
146
  BOOST_NORETURN inline void throw_bad_alloc()
53
147
  {
54
- const char msg[] = "boost::container bad_alloc thrown";
55
- (void)msg;
56
- BOOST_ASSERT(!msg);
148
+ BOOST_ASSERT(!"boost::container bad_alloc thrown");
57
149
  std::abort();
58
150
  }
59
151
 
60
152
  BOOST_NORETURN inline void throw_out_of_range(const char* str)
61
153
  {
62
- const char msg[] = "boost::container out_of_range thrown";
63
- (void)msg; (void)str;
64
- BOOST_ASSERT_MSG(!msg, str);
154
+ boost::ignore_unused(str);
155
+ BOOST_ASSERT_MSG(!"boost::container out_of_range thrown", str);
65
156
  std::abort();
66
157
  }
67
158
 
68
159
  BOOST_NORETURN inline void throw_length_error(const char* str)
69
160
  {
70
- const char msg[] = "boost::container length_error thrown";
71
- (void)msg; (void)str;
72
- BOOST_ASSERT_MSG(!msg, str);
161
+ boost::ignore_unused(str);
162
+ BOOST_ASSERT_MSG(!"boost::container length_error thrown", str);
73
163
  std::abort();
74
164
  }
75
165
 
76
166
  BOOST_NORETURN inline void throw_logic_error(const char* str)
77
167
  {
78
- const char msg[] = "boost::container logic_error thrown";
79
- (void)msg; (void)str;
80
- BOOST_ASSERT_MSG(!msg, str);
168
+ boost::ignore_unused(str);
169
+ BOOST_ASSERT_MSG(!"boost::container logic_error thrown", str);
81
170
  std::abort();
82
171
  }
83
172
 
84
173
  BOOST_NORETURN inline void throw_runtime_error(const char* str)
85
174
  {
86
- const char msg[] = "boost::container runtime_error thrown";
87
- (void)msg; (void)str;
88
- BOOST_ASSERT_MSG(!msg, str);
175
+ boost::ignore_unused(str);
176
+ BOOST_ASSERT_MSG(!"boost::container runtime_error thrown", str);
89
177
  std::abort();
90
178
  }
91
179
 
@@ -104,7 +192,11 @@ namespace container {
104
192
  //! </ul>
105
193
  BOOST_NORETURN inline void throw_bad_alloc()
106
194
  {
195
+ #ifdef BOOST_CONTAINER_USE_STD_EXCEPTIONS
107
196
  throw std::bad_alloc();
197
+ #else
198
+ throw bad_alloc();
199
+ #endif
108
200
  }
109
201
 
110
202
  //! Exception callback called by Boost.Container to signal arguments out of range.
@@ -120,7 +212,11 @@ namespace container {
120
212
  //! </ul>
121
213
  BOOST_NORETURN inline void throw_out_of_range(const char* str)
122
214
  {
215
+ #ifdef BOOST_CONTAINER_USE_STD_EXCEPTIONS
123
216
  throw std::out_of_range(str);
217
+ #else
218
+ throw out_of_range(str);
219
+ #endif
124
220
  }
125
221
 
126
222
  //! Exception callback called by Boost.Container to signal errors resizing.
@@ -136,7 +232,11 @@ namespace container {
136
232
  //! </ul>
137
233
  BOOST_NORETURN inline void throw_length_error(const char* str)
138
234
  {
235
+ #ifdef BOOST_CONTAINER_USE_STD_EXCEPTIONS
139
236
  throw std::length_error(str);
237
+ #else
238
+ throw length_error(str);
239
+ #endif
140
240
  }
141
241
 
142
242
  //! Exception callback called by Boost.Container to report errors in the internal logical
@@ -153,7 +253,11 @@ namespace container {
153
253
  //! </ul>
154
254
  BOOST_NORETURN inline void throw_logic_error(const char* str)
155
255
  {
256
+ #ifdef BOOST_CONTAINER_USE_STD_EXCEPTIONS
156
257
  throw std::logic_error(str);
258
+ #else
259
+ throw logic_error(str);
260
+ #endif
157
261
  }
158
262
 
159
263
  //! Exception callback called by Boost.Container to report errors that can only be detected during runtime.
@@ -169,7 +273,11 @@ namespace container {
169
273
  //! </ul>
170
274
  BOOST_NORETURN inline void throw_runtime_error(const char* str)
171
275
  {
276
+ #ifdef BOOST_CONTAINER_USE_STD_EXCEPTIONS
172
277
  throw std::runtime_error(str);
278
+ #else
279
+ throw runtime_error(str);
280
+ #endif
173
281
  }
174
282
 
175
283
  #endif
@@ -108,10 +108,12 @@ class vec_iterator
108
108
  , nat>::type nonconst_iterator;
109
109
 
110
110
  public:
111
- BOOST_CONTAINER_FORCEINLINE const Pointer &get_ptr() const BOOST_NOEXCEPT_OR_NOTHROW
111
+ BOOST_CONTAINER_FORCEINLINE
112
+ const Pointer &get_ptr() const BOOST_NOEXCEPT_OR_NOTHROW
112
113
  { return m_ptr; }
113
114
 
114
- BOOST_CONTAINER_FORCEINLINE Pointer &get_ptr() BOOST_NOEXCEPT_OR_NOTHROW
115
+ BOOST_CONTAINER_FORCEINLINE
116
+ Pointer &get_ptr() BOOST_NOEXCEPT_OR_NOTHROW
115
117
  { return m_ptr; }
116
118
 
117
119
  BOOST_CONTAINER_FORCEINLINE explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW
@@ -138,13 +140,16 @@ class vec_iterator
138
140
  { m_ptr = other.get_ptr(); return *this; }
139
141
 
140
142
  //Pointer like operators
141
- BOOST_CONTAINER_FORCEINLINE reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
143
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
144
+ reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
142
145
  { BOOST_ASSERT(!!m_ptr); return *m_ptr; }
143
146
 
144
- BOOST_CONTAINER_FORCEINLINE pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
147
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
148
+ pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
145
149
  { return m_ptr; }
146
150
 
147
- BOOST_CONTAINER_FORCEINLINE reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
151
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
152
+ reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
148
153
  { BOOST_ASSERT(!!m_ptr); return m_ptr[off]; }
149
154
 
150
155
  //Increment / Decrement
@@ -167,35 +172,45 @@ class vec_iterator
167
172
  BOOST_CONTAINER_FORCEINLINE vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
168
173
  { BOOST_ASSERT(m_ptr || !off); m_ptr -= off; return *this; }
169
174
 
170
- BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
175
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
176
+ friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
171
177
  { BOOST_ASSERT(x.m_ptr || !off); return vec_iterator(x.m_ptr+off); }
172
178
 
173
- BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
179
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
180
+ friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
174
181
  { BOOST_ASSERT(right.m_ptr || !off); right.m_ptr += off; return right; }
175
182
 
176
- BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
183
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
184
+ friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
177
185
  { BOOST_ASSERT(left.m_ptr || !off); left.m_ptr -= off; return left; }
178
186
 
179
- BOOST_CONTAINER_FORCEINLINE friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
187
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
188
+ friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
180
189
  { return left.m_ptr - right.m_ptr; }
181
190
 
182
191
  //Comparison operators
183
- BOOST_CONTAINER_FORCEINLINE friend bool operator== (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
192
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
193
+ friend bool operator== (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
184
194
  { return l.m_ptr == r.m_ptr; }
185
195
 
186
- BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
196
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
197
+ friend bool operator!= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
187
198
  { return l.m_ptr != r.m_ptr; }
188
199
 
189
- BOOST_CONTAINER_FORCEINLINE friend bool operator< (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
200
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
201
+ friend bool operator< (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
190
202
  { return l.m_ptr < r.m_ptr; }
191
203
 
192
- BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
204
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
205
+ friend bool operator<= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
193
206
  { return l.m_ptr <= r.m_ptr; }
194
207
 
195
- BOOST_CONTAINER_FORCEINLINE friend bool operator> (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
208
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
209
+ friend bool operator> (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
196
210
  { return l.m_ptr > r.m_ptr; }
197
211
 
198
- BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
212
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
213
+ friend bool operator>= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
199
214
  { return l.m_ptr >= r.m_ptr; }
200
215
  };
201
216
 
@@ -247,10 +262,6 @@ struct vector_value_traits_base
247
262
  {
248
263
  static const bool trivial_dctr = dtl::is_trivially_destructible<T>::value;
249
264
  static const bool trivial_dctr_after_move = has_trivial_destructor_after_move<T>::value;
250
- static const bool trivial_copy = dtl::is_trivially_copy_constructible<T>::value;
251
- static const bool nothrow_copy = dtl::is_nothrow_copy_constructible<T>::value || trivial_copy;
252
- static const bool trivial_assign = dtl::is_trivially_copy_assignable<T>::value;
253
- static const bool nothrow_assign = dtl::is_nothrow_copy_assignable<T>::value || trivial_assign;
254
265
  };
255
266
 
256
267
  template <class Allocator>
@@ -288,7 +299,8 @@ struct vector_alloc_holder
288
299
  typedef typename allocator_traits_type::size_type size_type;
289
300
  typedef typename allocator_traits_type::value_type value_type;
290
301
 
291
- BOOST_CONTAINER_FORCEINLINE static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc, bool const propagate_allocator)
302
+ BOOST_CONTAINER_FORCEINLINE
303
+ static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc, bool const propagate_allocator)
292
304
  {
293
305
  (void)propagate_allocator; (void)p; (void)to_alloc; (void)from_alloc;
294
306
  const bool all_storage_propagable = !allocator_traits_type::is_partially_propagable::value ||
@@ -296,7 +308,8 @@ struct vector_alloc_holder
296
308
  return all_storage_propagable && (propagate_allocator || allocator_traits_type::equal(from_alloc, to_alloc));
297
309
  }
298
310
 
299
- BOOST_CONTAINER_FORCEINLINE static bool are_swap_propagable(const allocator_type &l_a, pointer l_p, const allocator_type &r_a, pointer r_p, bool const propagate_allocator)
311
+ BOOST_CONTAINER_FORCEINLINE
312
+ static bool are_swap_propagable(const allocator_type &l_a, pointer l_p, const allocator_type &r_a, pointer r_p, bool const propagate_allocator)
300
313
  {
301
314
  (void)propagate_allocator; (void)l_p; (void)r_p; (void)l_a; (void)r_a;
302
315
  const bool all_storage_propagable = !allocator_traits_type::is_partially_propagable::value ||
@@ -317,35 +330,42 @@ struct vector_alloc_holder
317
330
  {}
318
331
 
319
332
  //Constructor, does not throw
320
- template<class AllocConvertible>
321
- vector_alloc_holder(vector_uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, size_type initial_size)
333
+ template<class AllocConvertible, class SizeType>
334
+ vector_alloc_holder(vector_uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, SizeType initial_size)
322
335
  : allocator_type(boost::forward<AllocConvertible>(a))
323
336
  , m_start()
324
337
  //Size is initialized here so vector should only call uninitialized_xxx after this
325
338
  , m_size(static_cast<stored_size_type>(initial_size))
326
339
  , m_capacity()
327
340
  {
328
- if(initial_size){
341
+ if (initial_size > size_type(-1)){
342
+ boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
343
+ }
344
+ else if(initial_size){
329
345
  pointer reuse = pointer();
330
- size_type final_cap = initial_size;
331
- m_start = this->allocation_command(allocate_new, initial_size, final_cap, reuse);
332
- m_capacity = static_cast<stored_size_type>(final_cap);
346
+ size_type final_cap = static_cast<size_type>(initial_size);
347
+ m_start = this->allocation_command(allocate_new, final_cap, final_cap, reuse);
348
+ this->set_stored_capacity(final_cap);
333
349
  }
334
350
  }
335
351
 
336
352
  //Constructor, does not throw
337
- vector_alloc_holder(vector_uninitialized_size_t, size_type initial_size)
353
+ template<class SizeType>
354
+ vector_alloc_holder(vector_uninitialized_size_t, SizeType initial_size)
338
355
  : allocator_type()
339
356
  , m_start()
340
357
  //Size is initialized here so vector should only call uninitialized_xxx after this
341
358
  , m_size(static_cast<stored_size_type>(initial_size))
342
359
  , m_capacity()
343
360
  {
344
- if(initial_size){
361
+ if (initial_size > size_type(-1)){
362
+ boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
363
+ }
364
+ else if(initial_size){
345
365
  pointer reuse = pointer();
346
366
  size_type final_cap = initial_size;
347
- m_start = this->allocation_command(allocate_new, initial_size, final_cap, reuse);
348
- m_capacity = static_cast<stored_size_type>(final_cap);
367
+ m_start = this->allocation_command(allocate_new, final_cap, final_cap, reuse);
368
+ this->set_stored_capacity(final_cap);
349
369
  }
350
370
  }
351
371
 
@@ -383,8 +403,20 @@ struct vector_alloc_holder
383
403
  }
384
404
  }
385
405
 
406
+ BOOST_CONTAINER_FORCEINLINE void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
407
+ { this->m_size = static_cast<stored_size_type>(s); }
408
+
409
+ BOOST_CONTAINER_FORCEINLINE void dec_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
410
+ { this->m_size -= static_cast<stored_size_type>(s); }
411
+
412
+ BOOST_CONTAINER_FORCEINLINE void inc_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
413
+ { this->m_size += static_cast<stored_size_type>(s); }
414
+
415
+ BOOST_CONTAINER_FORCEINLINE void set_stored_capacity(size_type c) BOOST_NOEXCEPT_OR_NOTHROW
416
+ { this->m_capacity = static_cast<stored_size_type>(c); }
417
+
386
418
  BOOST_CONTAINER_FORCEINLINE pointer allocation_command(boost::container::allocation_type command,
387
- size_type limit_size, size_type &prefer_in_recvd_out_size, pointer &reuse)
419
+ size_type limit_size, size_type &prefer_in_recvd_out_size, pointer &reuse)
388
420
  {
389
421
  typedef typename dtl::version<allocator_type>::type alloc_version;
390
422
  return this->priv_allocation_command(alloc_version(), command, limit_size, prefer_in_recvd_out_size, reuse);
@@ -427,7 +459,7 @@ struct vector_alloc_holder
427
459
  {
428
460
  BOOST_ASSERT(additional_objects > size_type(this->m_capacity - this->m_size));
429
461
  size_type max = allocator_traits_type::max_size(this->alloc());
430
- (clamp_by_stored_size_type)(max, stored_size_type());
462
+ (clamp_by_stored_size_type<size_type>)(max, stored_size_type());
431
463
  const size_type remaining_cap = max - size_type(this->m_capacity);
432
464
  const size_type min_additional_cap = additional_objects - size_type(this->m_capacity - this->m_size);
433
465
 
@@ -470,7 +502,7 @@ struct vector_alloc_holder
470
502
  BOOST_CONTAINER_FORCEINLINE void start(const pointer &p) BOOST_NOEXCEPT_OR_NOTHROW
471
503
  { m_start = p; }
472
504
  BOOST_CONTAINER_FORCEINLINE void capacity(const size_type &c) BOOST_NOEXCEPT_OR_NOTHROW
473
- { BOOST_ASSERT( c <= stored_size_type(-1)); m_capacity = c; }
505
+ { BOOST_ASSERT( c <= stored_size_type(-1)); this->set_stored_capacity(c); }
474
506
 
475
507
  static BOOST_CONTAINER_FORCEINLINE void on_capacity_overflow()
476
508
  { }
@@ -488,17 +520,7 @@ struct vector_alloc_holder
488
520
  }
489
521
  }
490
522
 
491
- BOOST_CONTAINER_FORCEINLINE static void clamp_by_stored_size_type(size_type &, size_type)
492
- {}
493
-
494
- template<class SomeStoredSizeType>
495
- BOOST_CONTAINER_FORCEINLINE static void clamp_by_stored_size_type(size_type &s, SomeStoredSizeType)
496
- {
497
- if (s >= SomeStoredSizeType(-1) )
498
- s = SomeStoredSizeType(-1);
499
- }
500
-
501
- BOOST_CONTAINER_FORCEINLINE pointer priv_allocation_command(version_1, boost::container::allocation_type command,
523
+ pointer priv_allocation_command(version_1, boost::container::allocation_type command,
502
524
  size_type limit_size,
503
525
  size_type &prefer_in_recvd_out_size,
504
526
  pointer &reuse)
@@ -510,7 +532,7 @@ struct vector_alloc_holder
510
532
  if (limit_size > stored_size_type(-1)){
511
533
  boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
512
534
  }
513
- (clamp_by_stored_size_type)(prefer_in_recvd_out_size, stored_size_type());
535
+ (clamp_by_stored_size_type<size_type>)(prefer_in_recvd_out_size, stored_size_type());
514
536
  pointer const p = this->allocate(prefer_in_recvd_out_size);
515
537
  reuse = pointer();
516
538
  return p;
@@ -525,11 +547,11 @@ struct vector_alloc_holder
525
547
  if (limit_size > stored_size_type(-1)){
526
548
  boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
527
549
  }
528
- (clamp_by_stored_size_type)(prefer_in_recvd_out_size, stored_size_type());
550
+ (clamp_by_stored_size_type<size_type>)(prefer_in_recvd_out_size, stored_size_type());
529
551
  //Allocate memory
530
552
  pointer p = this->alloc().allocation_command(command, limit_size, prefer_in_recvd_out_size, reuse);
531
553
  //If after allocation prefer_in_recvd_out_size is not representable by stored_size_type, truncate it.
532
- (clamp_by_stored_size_type)(prefer_in_recvd_out_size, stored_size_type());
554
+ (clamp_by_stored_size_type<size_type>)(prefer_in_recvd_out_size, stored_size_type());
533
555
  return p;
534
556
  }
535
557
  };
@@ -611,6 +633,15 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
611
633
  static BOOST_CONTAINER_FORCEINLINE void on_capacity_overflow()
612
634
  { allocator_type::on_capacity_overflow(); }
613
635
 
636
+ BOOST_CONTAINER_FORCEINLINE void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
637
+ { this->m_size = static_cast<stored_size_type>(s); }
638
+
639
+ BOOST_CONTAINER_FORCEINLINE void dec_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
640
+ { this->m_size -= static_cast<stored_size_type>(s); }
641
+
642
+ BOOST_CONTAINER_FORCEINLINE void inc_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
643
+ { this->m_size += static_cast<stored_size_type>(s); }
644
+
614
645
  BOOST_CONTAINER_FORCEINLINE void priv_first_allocation(size_type cap)
615
646
  {
616
647
  if(cap > allocator_type::internal_capacity){
@@ -656,7 +687,7 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
656
687
  BOOST_CONTAINER_FORCEINLINE pointer start() const BOOST_NOEXCEPT_OR_NOTHROW
657
688
  { return allocator_type::internal_storage(); }
658
689
 
659
- BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
690
+ BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
660
691
  { return allocator_type::internal_capacity; }
661
692
 
662
693
  stored_size_type m_size;
@@ -1003,7 +1034,7 @@ private:
1003
1034
  #endif
1004
1035
  ::boost::container::uninitialized_copy_alloc_n_source
1005
1036
  ( this->m_holder.alloc(), il.begin()
1006
- , il.size(), this->priv_raw_begin());
1037
+ , static_cast<size_type>(il.size()), this->priv_raw_begin());
1007
1038
  }
1008
1039
  #endif
1009
1040
 
@@ -1024,7 +1055,7 @@ private:
1024
1055
  : m_holder(boost::move(x.m_holder))
1025
1056
  {}
1026
1057
 
1027
- #endif //!defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1058
+ #endif // defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1028
1059
 
1029
1060
  //! <b>Effects</b>: Copy constructs a vector using the specified allocator.
1030
1061
  //!
@@ -1251,7 +1282,12 @@ private:
1251
1282
  {
1252
1283
  //For Fwd iterators the standard only requires EmplaceConstructible and assignable from *first
1253
1284
  //so we can't do any backwards allocation
1254
- const size_type input_sz = static_cast<size_type>(boost::container::iterator_distance(first, last));
1285
+ const typename iterator_traits<FwdIt>::size_type sz = boost::container::iterator_distance(first, last);
1286
+ if (sz > size_type(-1)){
1287
+ boost::container::throw_length_error("vector::assign, FwdIt's max length reached");
1288
+ }
1289
+
1290
+ const size_type input_sz = static_cast<size_type>(sz);
1255
1291
  const size_type old_capacity = this->capacity();
1256
1292
  if(input_sz > old_capacity){ //If input range is too big, we need to reallocate
1257
1293
  size_type real_cap = 0;
@@ -1282,7 +1318,7 @@ private:
1282
1318
  }
1283
1319
 
1284
1320
  boost::container::copy_assign_range_alloc_n(this->m_holder.alloc(), first, input_sz, this->priv_raw_begin(), this->size());
1285
- this->m_holder.m_size = input_sz;
1321
+ m_holder.set_stored_size(input_sz);
1286
1322
  }
1287
1323
 
1288
1324
  //! <b>Effects</b>: Assigns the n copies of val to *this.
@@ -1299,7 +1335,7 @@ private:
1299
1335
  //! <b>Throws</b>: If allocator's copy constructor throws.
1300
1336
  //!
1301
1337
  //! <b>Complexity</b>: Constant.
1302
- allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1338
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1303
1339
  { return this->m_holder.alloc(); }
1304
1340
 
1305
1341
  //! <b>Effects</b>: Returns a reference to the internal allocator.
@@ -1309,7 +1345,8 @@ private:
1309
1345
  //! <b>Complexity</b>: Constant.
1310
1346
  //!
1311
1347
  //! <b>Note</b>: Non-standard extension.
1312
- BOOST_CONTAINER_FORCEINLINE stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
1348
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1349
+ stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
1313
1350
  { return this->m_holder.alloc(); }
1314
1351
 
1315
1352
  //! <b>Effects</b>: Returns a reference to the internal allocator.
@@ -1319,7 +1356,8 @@ private:
1319
1356
  //! <b>Complexity</b>: Constant.
1320
1357
  //!
1321
1358
  //! <b>Note</b>: Non-standard extension.
1322
- BOOST_CONTAINER_FORCEINLINE const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1359
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1360
+ const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1323
1361
  { return this->m_holder.alloc(); }
1324
1362
 
1325
1363
  //////////////////////////////////////////////
@@ -1333,7 +1371,7 @@ private:
1333
1371
  //! <b>Throws</b>: Nothing.
1334
1372
  //!
1335
1373
  //! <b>Complexity</b>: Constant.
1336
- BOOST_CONTAINER_FORCEINLINE iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
1374
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
1337
1375
  { return iterator(this->m_holder.start()); }
1338
1376
 
1339
1377
  //! <b>Effects</b>: Returns a const_iterator to the first element contained in the vector.
@@ -1341,7 +1379,7 @@ private:
1341
1379
  //! <b>Throws</b>: Nothing.
1342
1380
  //!
1343
1381
  //! <b>Complexity</b>: Constant.
1344
- BOOST_CONTAINER_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
1382
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
1345
1383
  { return const_iterator(this->m_holder.start()); }
1346
1384
 
1347
1385
  //! <b>Effects</b>: Returns an iterator to the end of the vector.
@@ -1349,11 +1387,11 @@ private:
1349
1387
  //! <b>Throws</b>: Nothing.
1350
1388
  //!
1351
1389
  //! <b>Complexity</b>: Constant.
1352
- BOOST_CONTAINER_FORCEINLINE iterator end() BOOST_NOEXCEPT_OR_NOTHROW
1390
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE iterator end() BOOST_NOEXCEPT_OR_NOTHROW
1353
1391
  {
1354
- pointer const bg = this->m_holder.start();
1355
- size_type const sz = this->m_holder.m_size;
1356
- return iterator(BOOST_LIKELY(sz) ? bg + sz : bg); //Avoid UB on null-pointer arithmetic
1392
+ iterator it (this->m_holder.start());
1393
+ it += this->m_holder.m_size;
1394
+ return it; //Adding zero to null pointer is allowed (non-UB)
1357
1395
  }
1358
1396
 
1359
1397
  //! <b>Effects</b>: Returns a const_iterator to the end of the vector.
@@ -1361,7 +1399,7 @@ private:
1361
1399
  //! <b>Throws</b>: Nothing.
1362
1400
  //!
1363
1401
  //! <b>Complexity</b>: Constant.
1364
- BOOST_CONTAINER_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
1402
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
1365
1403
  { return this->cend(); }
1366
1404
 
1367
1405
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
@@ -1370,7 +1408,7 @@ private:
1370
1408
  //! <b>Throws</b>: Nothing.
1371
1409
  //!
1372
1410
  //! <b>Complexity</b>: Constant.
1373
- BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
1411
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
1374
1412
  { return reverse_iterator(this->end()); }
1375
1413
 
1376
1414
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
@@ -1379,7 +1417,7 @@ private:
1379
1417
  //! <b>Throws</b>: Nothing.
1380
1418
  //!
1381
1419
  //! <b>Complexity</b>: Constant.
1382
- BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1420
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1383
1421
  { return this->crbegin(); }
1384
1422
 
1385
1423
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
@@ -1388,7 +1426,7 @@ private:
1388
1426
  //! <b>Throws</b>: Nothing.
1389
1427
  //!
1390
1428
  //! <b>Complexity</b>: Constant.
1391
- BOOST_CONTAINER_FORCEINLINE reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
1429
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
1392
1430
  { return reverse_iterator(this->begin()); }
1393
1431
 
1394
1432
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
@@ -1397,7 +1435,7 @@ private:
1397
1435
  //! <b>Throws</b>: Nothing.
1398
1436
  //!
1399
1437
  //! <b>Complexity</b>: Constant.
1400
- BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
1438
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
1401
1439
  { return this->crend(); }
1402
1440
 
1403
1441
  //! <b>Effects</b>: Returns a const_iterator to the first element contained in the vector.
@@ -1405,7 +1443,7 @@ private:
1405
1443
  //! <b>Throws</b>: Nothing.
1406
1444
  //!
1407
1445
  //! <b>Complexity</b>: Constant.
1408
- BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1446
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1409
1447
  { return const_iterator(this->m_holder.start()); }
1410
1448
 
1411
1449
  //! <b>Effects</b>: Returns a const_iterator to the end of the vector.
@@ -1413,13 +1451,12 @@ private:
1413
1451
  //! <b>Throws</b>: Nothing.
1414
1452
  //!
1415
1453
  //! <b>Complexity</b>: Constant.
1416
- BOOST_CONTAINER_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
1454
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
1417
1455
  {
1418
- pointer const bg = this->m_holder.start();
1419
- size_type const sz = this->m_holder.m_size;
1420
- return const_iterator(BOOST_LIKELY(sz) ? bg + sz : bg); //Avoid UB on null-pointer arithmetic
1456
+ const_iterator it (this->m_holder.start());
1457
+ it += this->m_holder.m_size;
1458
+ return it; //Adding zero to null pointer is allowed (non-UB)
1421
1459
  }
1422
- //{ return const_iterator(this->m_holder.start() + this->m_holder.m_size); }
1423
1460
 
1424
1461
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
1425
1462
  //! of the reversed vector.
@@ -1427,7 +1464,7 @@ private:
1427
1464
  //! <b>Throws</b>: Nothing.
1428
1465
  //!
1429
1466
  //! <b>Complexity</b>: Constant.
1430
- BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1467
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1431
1468
  { return const_reverse_iterator(this->end());}
1432
1469
 
1433
1470
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
@@ -1436,7 +1473,7 @@ private:
1436
1473
  //! <b>Throws</b>: Nothing.
1437
1474
  //!
1438
1475
  //! <b>Complexity</b>: Constant.
1439
- BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
1476
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
1440
1477
  { return const_reverse_iterator(this->begin()); }
1441
1478
 
1442
1479
  //////////////////////////////////////////////
@@ -1450,7 +1487,7 @@ private:
1450
1487
  //! <b>Throws</b>: Nothing.
1451
1488
  //!
1452
1489
  //! <b>Complexity</b>: Constant.
1453
- BOOST_CONTAINER_FORCEINLINE bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
1490
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
1454
1491
  { return !this->m_holder.m_size; }
1455
1492
 
1456
1493
  //! <b>Effects</b>: Returns the number of the elements contained in the vector.
@@ -1458,7 +1495,7 @@ private:
1458
1495
  //! <b>Throws</b>: Nothing.
1459
1496
  //!
1460
1497
  //! <b>Complexity</b>: Constant.
1461
- BOOST_CONTAINER_FORCEINLINE size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
1498
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
1462
1499
  { return this->m_holder.m_size; }
1463
1500
 
1464
1501
  //! <b>Effects</b>: Returns the largest possible size of the vector.
@@ -1466,7 +1503,7 @@ private:
1466
1503
  //! <b>Throws</b>: Nothing.
1467
1504
  //!
1468
1505
  //! <b>Complexity</b>: Constant.
1469
- BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
1506
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
1470
1507
  { return allocator_traits_type::max_size(this->m_holder.alloc()); }
1471
1508
 
1472
1509
  //! <b>Effects</b>: Inserts or erases elements at the end such that
@@ -1475,8 +1512,8 @@ private:
1475
1512
  //! <b>Throws</b>: If memory allocation throws, or T's copy/move or value initialization throws.
1476
1513
  //!
1477
1514
  //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1478
- void resize(size_type new_size)
1479
- { this->priv_resize(new_size, value_init); }
1515
+ BOOST_CONTAINER_FORCEINLINE void resize(size_type new_size)
1516
+ { this->priv_resize(new_size, value_init, alloc_version()); }
1480
1517
 
1481
1518
  //! <b>Effects</b>: Inserts or erases elements at the end such that
1482
1519
  //! the size becomes n. New elements are default initialized.
@@ -1486,8 +1523,8 @@ private:
1486
1523
  //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1487
1524
  //!
1488
1525
  //! <b>Note</b>: Non-standard extension
1489
- void resize(size_type new_size, default_init_t)
1490
- { this->priv_resize(new_size, default_init); }
1526
+ BOOST_CONTAINER_FORCEINLINE void resize(size_type new_size, default_init_t)
1527
+ { this->priv_resize(new_size, default_init, alloc_version()); }
1491
1528
 
1492
1529
  //! <b>Effects</b>: Inserts or erases elements at the end such that
1493
1530
  //! the size becomes n. New elements are copy constructed from x.
@@ -1495,8 +1532,8 @@ private:
1495
1532
  //! <b>Throws</b>: If memory allocation throws, or T's copy/move constructor throws.
1496
1533
  //!
1497
1534
  //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1498
- void resize(size_type new_size, const T& x)
1499
- { this->priv_resize(new_size, x); }
1535
+ BOOST_CONTAINER_FORCEINLINE void resize(size_type new_size, const T& x)
1536
+ { this->priv_resize(new_size, x, alloc_version()); }
1500
1537
 
1501
1538
  //! <b>Effects</b>: Number of elements for which memory has been allocated.
1502
1539
  //! capacity() is always greater than or equal to size().
@@ -1504,7 +1541,7 @@ private:
1504
1541
  //! <b>Throws</b>: Nothing.
1505
1542
  //!
1506
1543
  //! <b>Complexity</b>: Constant.
1507
- BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
1544
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
1508
1545
  { return this->m_holder.capacity(); }
1509
1546
 
1510
1547
  //! <b>Effects</b>: If n is less than or equal to capacity(), this call has no
@@ -1516,7 +1553,7 @@ private:
1516
1553
  BOOST_CONTAINER_FORCEINLINE void reserve(size_type new_cap)
1517
1554
  {
1518
1555
  if (this->capacity() < new_cap){
1519
- this->priv_reserve_no_capacity(new_cap, alloc_version());
1556
+ this->priv_move_to_new_buffer(new_cap, alloc_version());
1520
1557
  }
1521
1558
  }
1522
1559
 
@@ -1543,7 +1580,7 @@ private:
1543
1580
  //! <b>Throws</b>: Nothing.
1544
1581
  //!
1545
1582
  //! <b>Complexity</b>: Constant.
1546
- reference front() BOOST_NOEXCEPT_OR_NOTHROW
1583
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference front() BOOST_NOEXCEPT_OR_NOTHROW
1547
1584
  {
1548
1585
  BOOST_ASSERT(!this->empty());
1549
1586
  return *this->m_holder.start();
@@ -1557,7 +1594,7 @@ private:
1557
1594
  //! <b>Throws</b>: Nothing.
1558
1595
  //!
1559
1596
  //! <b>Complexity</b>: Constant.
1560
- const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
1597
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
1561
1598
  {
1562
1599
  BOOST_ASSERT(!this->empty());
1563
1600
  return *this->m_holder.start();
@@ -1571,7 +1608,7 @@ private:
1571
1608
  //! <b>Throws</b>: Nothing.
1572
1609
  //!
1573
1610
  //! <b>Complexity</b>: Constant.
1574
- reference back() BOOST_NOEXCEPT_OR_NOTHROW
1611
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference back() BOOST_NOEXCEPT_OR_NOTHROW
1575
1612
  {
1576
1613
  BOOST_ASSERT(!this->empty());
1577
1614
  return this->m_holder.start()[this->m_holder.m_size - 1];
@@ -1585,7 +1622,7 @@ private:
1585
1622
  //! <b>Throws</b>: Nothing.
1586
1623
  //!
1587
1624
  //! <b>Complexity</b>: Constant.
1588
- const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW
1625
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW
1589
1626
  {
1590
1627
  BOOST_ASSERT(!this->empty());
1591
1628
  return this->m_holder.start()[this->m_holder.m_size - 1];
@@ -1599,7 +1636,7 @@ private:
1599
1636
  //! <b>Throws</b>: Nothing.
1600
1637
  //!
1601
1638
  //! <b>Complexity</b>: Constant.
1602
- reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1639
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1603
1640
  {
1604
1641
  BOOST_ASSERT(this->m_holder.m_size > n);
1605
1642
  return this->m_holder.start()[n];
@@ -1613,7 +1650,8 @@ private:
1613
1650
  //! <b>Throws</b>: Nothing.
1614
1651
  //!
1615
1652
  //! <b>Complexity</b>: Constant.
1616
- const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1653
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1654
+ const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1617
1655
  {
1618
1656
  BOOST_ASSERT(this->m_holder.m_size > n);
1619
1657
  return this->m_holder.start()[n];
@@ -1630,7 +1668,8 @@ private:
1630
1668
  //! <b>Complexity</b>: Constant.
1631
1669
  //!
1632
1670
  //! <b>Note</b>: Non-standard extension
1633
- iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1671
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1672
+ iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1634
1673
  {
1635
1674
  BOOST_ASSERT(this->m_holder.m_size >= n);
1636
1675
  return iterator(this->m_holder.start()+n);
@@ -1647,7 +1686,8 @@ private:
1647
1686
  //! <b>Complexity</b>: Constant.
1648
1687
  //!
1649
1688
  //! <b>Note</b>: Non-standard extension
1650
- const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1689
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1690
+ const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1651
1691
  {
1652
1692
  BOOST_ASSERT(this->m_holder.m_size >= n);
1653
1693
  return const_iterator(this->m_holder.start()+n);
@@ -1663,7 +1703,8 @@ private:
1663
1703
  //! <b>Complexity</b>: Constant.
1664
1704
  //!
1665
1705
  //! <b>Note</b>: Non-standard extension
1666
- size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
1706
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1707
+ size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
1667
1708
  {
1668
1709
  //Range check assert done in priv_index_of
1669
1710
  return this->priv_index_of(vector_iterator_get_ptr(p));
@@ -1679,7 +1720,8 @@ private:
1679
1720
  //! <b>Complexity</b>: Constant.
1680
1721
  //!
1681
1722
  //! <b>Note</b>: Non-standard extension
1682
- size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
1723
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1724
+ size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
1683
1725
  {
1684
1726
  //Range check assert done in priv_index_of
1685
1727
  return this->priv_index_of(vector_iterator_get_ptr(p));
@@ -1690,10 +1732,10 @@ private:
1690
1732
  //! <b>Effects</b>: Returns a reference to the nth element
1691
1733
  //! from the beginning of the container.
1692
1734
  //!
1693
- //! <b>Throws</b>: std::range_error if n >= size()
1735
+ //! <b>Throws</b>: range_error if n >= size()
1694
1736
  //!
1695
1737
  //! <b>Complexity</b>: Constant.
1696
- reference at(size_type n)
1738
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference at(size_type n)
1697
1739
  {
1698
1740
  this->priv_throw_if_out_of_range(n);
1699
1741
  return this->m_holder.start()[n];
@@ -1704,10 +1746,10 @@ private:
1704
1746
  //! <b>Effects</b>: Returns a const reference to the nth element
1705
1747
  //! from the beginning of the container.
1706
1748
  //!
1707
- //! <b>Throws</b>: std::range_error if n >= size()
1749
+ //! <b>Throws</b>: range_error if n >= size()
1708
1750
  //!
1709
1751
  //! <b>Complexity</b>: Constant.
1710
- const_reference at(size_type n) const
1752
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reference at(size_type n) const
1711
1753
  {
1712
1754
  this->priv_throw_if_out_of_range(n);
1713
1755
  return this->m_holder.start()[n];
@@ -1725,7 +1767,7 @@ private:
1725
1767
  //! <b>Throws</b>: Nothing.
1726
1768
  //!
1727
1769
  //! <b>Complexity</b>: Constant.
1728
- T* data() BOOST_NOEXCEPT_OR_NOTHROW
1770
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE T* data() BOOST_NOEXCEPT_OR_NOTHROW
1729
1771
  { return this->priv_raw_begin(); }
1730
1772
 
1731
1773
  //! <b>Returns</b>: A pointer such that [data(),data() + size()) is a valid range.
@@ -1734,7 +1776,7 @@ private:
1734
1776
  //! <b>Throws</b>: Nothing.
1735
1777
  //!
1736
1778
  //! <b>Complexity</b>: Constant.
1737
- const T * data() const BOOST_NOEXCEPT_OR_NOTHROW
1779
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const T * data() const BOOST_NOEXCEPT_OR_NOTHROW
1738
1780
  { return this->priv_raw_begin(); }
1739
1781
 
1740
1782
  //////////////////////////////////////////////
@@ -1756,17 +1798,17 @@ private:
1756
1798
  template<class ...Args>
1757
1799
  BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_FWD_REF(Args)...args)
1758
1800
  {
1801
+ T* const p = this->priv_raw_end();
1759
1802
  if (BOOST_LIKELY(this->room_enough())){
1760
1803
  //There is more memory, just construct a new object at the end
1761
- T* const p = this->priv_raw_end();
1762
1804
  allocator_traits_type::construct(this->m_holder.alloc(), p, ::boost::forward<Args>(args)...);
1763
1805
  ++this->m_holder.m_size;
1764
1806
  return *p;
1765
1807
  }
1766
1808
  else{
1767
- typedef dtl::insert_emplace_proxy<allocator_type, T*, Args...> type;
1768
- return *this->priv_forward_range_insert_no_capacity
1769
- (this->back_ptr(), 1, type(::boost::forward<Args>(args)...), alloc_version());
1809
+ typedef dtl::insert_emplace_proxy<allocator_type, T*, Args...> proxy_t;
1810
+ return *this->priv_insert_forward_range_no_capacity
1811
+ (p, 1, proxy_t(::boost::forward<Args>(args)...), alloc_version());
1770
1812
  }
1771
1813
  }
1772
1814
 
@@ -1801,13 +1843,13 @@ private:
1801
1843
  //! <b>Complexity</b>: If position is end(), amortized constant time
1802
1844
  //! Linear time otherwise.
1803
1845
  template<class ...Args>
1804
- iterator emplace(const_iterator position, BOOST_FWD_REF(Args) ...args)
1846
+ BOOST_CONTAINER_FORCEINLINE iterator emplace(const_iterator position, BOOST_FWD_REF(Args) ...args)
1805
1847
  {
1806
1848
  BOOST_ASSERT(this->priv_in_range_or_end(position));
1807
1849
  //Just call more general insert(pos, size, value) and return iterator
1808
- typedef dtl::insert_emplace_proxy<allocator_type, T*, Args...> type;
1809
- return this->priv_forward_range_insert( vector_iterator_get_ptr(position), 1
1810
- , type(::boost::forward<Args>(args)...));
1850
+ typedef dtl::insert_emplace_proxy<allocator_type, T*, Args...> proxy_t;
1851
+ return this->priv_insert_forward_range( vector_iterator_get_ptr(position), 1
1852
+ , proxy_t(::boost::forward<Args>(args)...));
1811
1853
  }
1812
1854
 
1813
1855
  #else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
@@ -1816,17 +1858,17 @@ private:
1816
1858
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1817
1859
  BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_MOVE_UREF##N)\
1818
1860
  {\
1861
+ T* const p = this->priv_raw_end();\
1819
1862
  if (BOOST_LIKELY(this->room_enough())){\
1820
- T* const p = this->priv_raw_end();\
1821
1863
  allocator_traits_type::construct (this->m_holder.alloc()\
1822
1864
  , this->priv_raw_end() BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
1823
1865
  ++this->m_holder.m_size;\
1824
1866
  return *p;\
1825
1867
  }\
1826
1868
  else{\
1827
- typedef dtl::insert_emplace_proxy_arg##N<allocator_type, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
1828
- return *this->priv_forward_range_insert_no_capacity\
1829
- ( this->back_ptr(), 1, type(BOOST_MOVE_FWD##N), alloc_version());\
1869
+ typedef dtl::insert_emplace_proxy_arg##N<allocator_type, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> proxy_t;\
1870
+ return *this->priv_insert_forward_range_no_capacity\
1871
+ ( p, 1, proxy_t(BOOST_MOVE_FWD##N), alloc_version());\
1830
1872
  }\
1831
1873
  }\
1832
1874
  \
@@ -1843,11 +1885,11 @@ private:
1843
1885
  }\
1844
1886
  \
1845
1887
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1846
- iterator emplace(const_iterator pos BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1888
+ BOOST_CONTAINER_FORCEINLINE iterator emplace(const_iterator pos BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1847
1889
  {\
1848
1890
  BOOST_ASSERT(this->priv_in_range_or_end(pos));\
1849
- typedef dtl::insert_emplace_proxy_arg##N<allocator_type, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
1850
- return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), 1, type(BOOST_MOVE_FWD##N));\
1891
+ typedef dtl::insert_emplace_proxy_arg##N<allocator_type, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> proxy_t;\
1892
+ return this->priv_insert_forward_range(vector_iterator_get_ptr(pos), 1, proxy_t(BOOST_MOVE_FWD##N));\
1851
1893
  }\
1852
1894
  //
1853
1895
  BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_VECTOR_EMPLACE_CODE)
@@ -1909,11 +1951,11 @@ private:
1909
1951
  //! <b>Throws</b>: If memory allocation throws or T's copy/move constructor throws.
1910
1952
  //!
1911
1953
  //! <b>Complexity</b>: Linear to n.
1912
- iterator insert(const_iterator p, size_type n, const T& x)
1954
+ BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator p, size_type n, const T& x)
1913
1955
  {
1914
1956
  BOOST_ASSERT(this->priv_in_range_or_end(p));
1915
1957
  dtl::insert_n_copies_proxy<allocator_type, T*> proxy(x);
1916
- return this->priv_forward_range_insert(vector_iterator_get_ptr(p), n, proxy);
1958
+ return this->priv_insert_forward_range(vector_iterator_get_ptr(p), n, proxy);
1917
1959
  }
1918
1960
 
1919
1961
  //! <b>Requires</b>: p must be a valid iterator of *this.
@@ -1949,7 +1991,7 @@ private:
1949
1991
 
1950
1992
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1951
1993
  template <class FwdIt>
1952
- iterator insert(const_iterator pos, FwdIt first, FwdIt last
1994
+ BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator pos, FwdIt first, FwdIt last
1953
1995
  , typename dtl::disable_if_or
1954
1996
  < void
1955
1997
  , dtl::is_convertible<FwdIt, size_type>
@@ -1958,8 +2000,13 @@ private:
1958
2000
  )
1959
2001
  {
1960
2002
  BOOST_ASSERT(this->priv_in_range_or_end(pos));
2003
+ const typename iterator_traits<FwdIt>::size_type sz = boost::container::iterator_distance(first, last);
2004
+ if (sz > size_type(-1)){
2005
+ boost::container::throw_length_error("vector::insert, FwdIt's max length reached");
2006
+ }
2007
+
1961
2008
  dtl::insert_range_proxy<allocator_type, FwdIt, T*> proxy(first);
1962
- return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), boost::container::iterator_distance(first, last), proxy);
2009
+ return this->priv_insert_forward_range(vector_iterator_get_ptr(pos), static_cast<size_type>(sz), proxy);
1963
2010
  }
1964
2011
  #endif
1965
2012
 
@@ -1980,14 +2027,14 @@ private:
1980
2027
  //! a non-standard extension.
1981
2028
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1982
2029
  template <class InIt>
1983
- iterator insert(const_iterator pos, size_type num, InIt first, InIt last)
2030
+ BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator pos, size_type num, InIt first, InIt last)
1984
2031
  {
1985
2032
  BOOST_ASSERT(this->priv_in_range_or_end(pos));
1986
2033
  BOOST_ASSERT(dtl::is_input_iterator<InIt>::value ||
1987
2034
  num == static_cast<size_type>(boost::container::iterator_distance(first, last)));
1988
2035
  (void)last;
1989
2036
  dtl::insert_range_proxy<allocator_type, InIt, T*> proxy(first);
1990
- return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), num, proxy);
2037
+ return this->priv_insert_forward_range(vector_iterator_get_ptr(pos), num, proxy);
1991
2038
  }
1992
2039
  #endif
1993
2040
 
@@ -1999,7 +2046,7 @@ private:
1999
2046
  //! <b>Returns</b>: an iterator to the first inserted element or position if first == last.
2000
2047
  //!
2001
2048
  //! <b>Complexity</b>: Linear to the range [il.begin(), il.end()).
2002
- iterator insert(const_iterator position, std::initializer_list<value_type> il)
2049
+ BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator position, std::initializer_list<value_type> il)
2003
2050
  {
2004
2051
  //Assertion done in insert()
2005
2052
  return this->insert(position, il.begin(), il.end());
@@ -2011,11 +2058,12 @@ private:
2011
2058
  //! <b>Throws</b>: Nothing.
2012
2059
  //!
2013
2060
  //! <b>Complexity</b>: Constant time.
2014
- void pop_back() BOOST_NOEXCEPT_OR_NOTHROW
2061
+ BOOST_CONTAINER_FORCEINLINE void pop_back() BOOST_NOEXCEPT_OR_NOTHROW
2015
2062
  {
2016
2063
  BOOST_ASSERT(!this->empty());
2017
2064
  //Destroy last element
2018
- this->priv_destroy_last();
2065
+ allocator_traits_type::destroy(this->get_stored_allocator(), this->priv_raw_end() - 1);
2066
+ --this->m_holder.m_size;
2019
2067
  }
2020
2068
 
2021
2069
  //! <b>Effects</b>: Erases the element at position pos.
@@ -2029,10 +2077,16 @@ private:
2029
2077
  BOOST_ASSERT(this->priv_in_range(position));
2030
2078
  const pointer p = vector_iterator_get_ptr(position);
2031
2079
  T *const pos_ptr = boost::movelib::to_raw_pointer(p);
2032
- T *const beg_ptr = this->priv_raw_begin();
2033
- T *const new_end_ptr = ::boost::container::move(pos_ptr + 1, beg_ptr + this->m_holder.m_size, pos_ptr);
2080
+ T *const end_ptr = this->priv_raw_end();
2081
+
2034
2082
  //Move elements forward and destroy last
2035
- this->priv_destroy_last(pos_ptr != new_end_ptr);
2083
+ (void)::boost::container::move(pos_ptr + 1, end_ptr, pos_ptr);
2084
+
2085
+ T *const last_ptr = end_ptr-1;
2086
+ if(!value_traits::trivial_dctr_after_move || pos_ptr == last_ptr){
2087
+ allocator_traits_type::destroy(this->get_stored_allocator(), last_ptr);
2088
+ }
2089
+ --this->m_holder.m_size;
2036
2090
  return iterator(p);
2037
2091
  }
2038
2092
 
@@ -2044,15 +2098,19 @@ private:
2044
2098
  //! plus linear to the elements between pos and the last element.
2045
2099
  iterator erase(const_iterator first, const_iterator last)
2046
2100
  {
2047
- if (first != last){
2048
- BOOST_ASSERT(this->priv_in_range(first));
2049
- BOOST_ASSERT(this->priv_in_range_or_end(last));
2050
- BOOST_ASSERT(first < last);
2101
+ BOOST_ASSERT(this->priv_in_range_or_end(first));
2102
+ BOOST_ASSERT(this->priv_in_range_or_end(last));
2103
+ BOOST_ASSERT(first <= last);
2104
+ if(first != last){
2051
2105
  T* const old_end_ptr = this->priv_raw_end();
2052
2106
  T* const first_ptr = boost::movelib::to_raw_pointer(vector_iterator_get_ptr(first));
2053
2107
  T* const last_ptr = boost::movelib::to_raw_pointer(vector_iterator_get_ptr(last));
2054
- T* const ptr = boost::movelib::to_raw_pointer(boost::container::move(last_ptr, old_end_ptr, first_ptr));
2055
- this->priv_destroy_last_n(old_end_ptr - ptr);
2108
+ T* const new_last_ptr = boost::movelib::to_raw_pointer(boost::container::move(last_ptr, old_end_ptr, first_ptr));
2109
+ const size_type n = static_cast<size_type>(old_end_ptr - new_last_ptr);
2110
+ if(!value_traits::trivial_dctr_after_move || old_end_ptr == last_ptr){
2111
+ boost::container::destroy_alloc_n(this->get_stored_allocator(), new_last_ptr, n);
2112
+ }
2113
+ this->m_holder.dec_stored_size(n);
2056
2114
  }
2057
2115
  return iterator(vector_iterator_get_ptr(first));
2058
2116
  }
@@ -2102,43 +2160,44 @@ private:
2102
2160
  //! <b>Effects</b>: Returns true if x and y are equal
2103
2161
  //!
2104
2162
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2105
- BOOST_CONTAINER_FORCEINLINE friend bool operator==(const vector& x, const vector& y)
2163
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator==(const vector& x, const vector& y)
2106
2164
  { return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
2107
2165
 
2108
2166
  //! <b>Effects</b>: Returns true if x and y are unequal
2109
2167
  //!
2110
2168
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2111
- BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const vector& x, const vector& y)
2169
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const vector& x, const vector& y)
2112
2170
  { return !(x == y); }
2113
2171
 
2114
2172
  //! <b>Effects</b>: Returns true if x is less than y
2115
2173
  //!
2116
2174
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2117
- friend bool operator<(const vector& x, const vector& y)
2175
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD friend bool operator<(const vector& x, const vector& y)
2118
2176
  { return boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
2119
2177
 
2120
2178
  //! <b>Effects</b>: Returns true if x is greater than y
2121
2179
  //!
2122
2180
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2123
- BOOST_CONTAINER_FORCEINLINE friend bool operator>(const vector& x, const vector& y)
2181
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator>(const vector& x, const vector& y)
2124
2182
  { return y < x; }
2125
2183
 
2126
2184
  //! <b>Effects</b>: Returns true if x is equal or less than y
2127
2185
  //!
2128
2186
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2129
- BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const vector& x, const vector& y)
2187
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const vector& x, const vector& y)
2130
2188
  { return !(y < x); }
2131
2189
 
2132
2190
  //! <b>Effects</b>: Returns true if x is equal or greater than y
2133
2191
  //!
2134
2192
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2135
- BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const vector& x, const vector& y)
2193
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const vector& x, const vector& y)
2136
2194
  { return !(x < y); }
2137
2195
 
2138
2196
  //! <b>Effects</b>: x.swap(y)
2139
2197
  //!
2140
2198
  //! <b>Complexity</b>: Constant.
2141
2199
  BOOST_CONTAINER_FORCEINLINE friend void swap(vector& x, vector& y)
2200
+ BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT(x.swap(y)))
2142
2201
  { x.swap(y); }
2143
2202
 
2144
2203
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
@@ -2245,14 +2304,14 @@ private:
2245
2304
  else{
2246
2305
  //Hole was just filled, disable exception rollback and change vector size
2247
2306
  past_hole_values_destroyer.release();
2248
- this->m_holder.m_size += element_count;
2307
+ this->m_holder.inc_stored_size(element_count);
2249
2308
  }
2250
2309
  }
2251
2310
  else{
2252
2311
  if(old_hole_size){
2253
2312
  //Hole was just filled by priv_insert_ordered_at_shift_range, disable exception rollback and change vector size
2254
2313
  past_hole_values_destroyer.release();
2255
- this->m_holder.m_size += element_count;
2314
+ this->m_holder.inc_stored_size(element_count);
2256
2315
  }
2257
2316
  //Insert the new value in the already constructed range
2258
2317
  begin_ptr[pos + insertions_left - 1] = position_value.get_val();
@@ -2353,7 +2412,7 @@ private:
2353
2412
  if (old_cap > 0) {
2354
2413
  this->m_holder.deallocate(old_p, old_cap);
2355
2414
  }
2356
- this->m_holder.m_size = old_size + added;
2415
+ m_holder.set_stored_size(old_size + added);
2357
2416
  this->m_holder.start(new_storage);
2358
2417
  this->m_holder.capacity(new_cap);
2359
2418
  new_buffer_deallocator.release();
@@ -2361,12 +2420,12 @@ private:
2361
2420
  }
2362
2421
 
2363
2422
  BOOST_CONTAINER_FORCEINLINE bool room_enough() const
2364
- { return this->m_holder.m_size < this->m_holder.capacity(); }
2423
+ { return this->m_holder.m_size != this->m_holder.capacity(); }
2365
2424
 
2366
2425
  BOOST_CONTAINER_FORCEINLINE pointer back_ptr() const
2367
2426
  { return this->m_holder.start() + this->m_holder.m_size; }
2368
2427
 
2369
- size_type priv_index_of(pointer p) const
2428
+ BOOST_CONTAINER_FORCEINLINE size_type priv_index_of(pointer p) const
2370
2429
  {
2371
2430
  BOOST_ASSERT(this->m_holder.start() <= p);
2372
2431
  BOOST_ASSERT(p <= (this->m_holder.start()+this->size()));
@@ -2387,7 +2446,7 @@ private:
2387
2446
  const size_type this_sz = m_holder.m_size;
2388
2447
  const size_type other_sz = static_cast<size_type>(x.m_holder.m_size);
2389
2448
  boost::container::move_assign_range_alloc_n(this->m_holder.alloc(), other_start, other_sz, this_start, this_sz);
2390
- this->m_holder.m_size = other_sz;
2449
+ m_holder.set_stored_size(other_sz);
2391
2450
  //Not emptying the source container seems to be confusing for users as drop-in
2392
2451
  //replacement for non-static vectors, so clear it.
2393
2452
  x.clear();
@@ -2445,7 +2504,7 @@ private:
2445
2504
  const size_type this_sz = m_holder.m_size;
2446
2505
  const size_type other_sz = static_cast<size_type>(x.m_holder.m_size);
2447
2506
  boost::container::copy_assign_range_alloc_n(this->m_holder.alloc(), other_start, other_sz, this_start, this_sz);
2448
- this->m_holder.m_size = other_sz;
2507
+ m_holder.set_stored_size(other_sz);
2449
2508
  }
2450
2509
 
2451
2510
  template<class OtherA>
@@ -2469,7 +2528,7 @@ private:
2469
2528
  }
2470
2529
 
2471
2530
  template<class Vector> //Template it to avoid it in explicit instantiations
2472
- void priv_swap(Vector &x, dtl::true_type) //version_0
2531
+ BOOST_CONTAINER_FORCEINLINE void priv_swap(Vector &x, dtl::true_type) //version_0
2473
2532
  { this->m_holder.deep_swap(x.m_holder); }
2474
2533
 
2475
2534
  template<class Vector> //Template it to avoid it in explicit instantiations
@@ -2506,26 +2565,29 @@ private:
2506
2565
  dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), dtl::bool_<propagate_alloc>());
2507
2566
  }
2508
2567
 
2509
- void priv_reserve_no_capacity(size_type, version_0)
2568
+ BOOST_CONTAINER_FORCEINLINE void priv_move_to_new_buffer(size_type, version_0)
2510
2569
  { alloc_holder_t::on_capacity_overflow(); }
2511
2570
 
2512
- dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*>, T*> priv_dummy_empty_proxy()
2571
+ BOOST_CONTAINER_FORCEINLINE dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*>, T*> priv_dummy_empty_proxy()
2513
2572
  {
2514
2573
  return dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*>, T*>
2515
2574
  (::boost::make_move_iterator((T *)0));
2516
2575
  }
2517
2576
 
2518
- void priv_reserve_no_capacity(size_type new_cap, version_1)
2577
+ BOOST_CONTAINER_FORCEINLINE void priv_move_to_new_buffer(size_type new_cap, version_1)
2519
2578
  {
2520
2579
  //There is not enough memory, allocate a new buffer
2521
2580
  //Pass the hint so that allocators can take advantage of this.
2522
2581
  pointer const p = this->m_holder.allocate(new_cap);
2582
+ #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2583
+ ++this->num_alloc;
2584
+ #endif
2523
2585
  //We will reuse insert code, so create a dummy input iterator
2524
- this->priv_forward_range_insert_new_allocation
2586
+ this->priv_insert_forward_range_new_allocation
2525
2587
  ( boost::movelib::to_raw_pointer(p), new_cap, this->priv_raw_end(), 0, this->priv_dummy_empty_proxy());
2526
2588
  }
2527
2589
 
2528
- void priv_reserve_no_capacity(size_type new_cap, version_2)
2590
+ void priv_move_to_new_buffer(size_type new_cap, version_2)
2529
2591
  {
2530
2592
  //There is not enough memory, allocate a new
2531
2593
  //buffer or expand the old one.
@@ -2549,38 +2611,24 @@ private:
2549
2611
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2550
2612
  ++this->num_expand_bwd;
2551
2613
  #endif
2552
- this->priv_forward_range_insert_expand_backwards
2614
+ this->priv_insert_forward_range_expand_backwards
2553
2615
  ( new_mem , real_cap, ins_pos, 0, this->priv_dummy_empty_proxy());
2554
2616
  }
2555
2617
  else{ //New buffer
2556
2618
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2557
2619
  ++this->num_alloc;
2558
2620
  #endif
2559
- this->priv_forward_range_insert_new_allocation
2621
+ this->priv_insert_forward_range_new_allocation
2560
2622
  ( new_mem, real_cap, ins_pos, 0, this->priv_dummy_empty_proxy());
2561
2623
  }
2562
2624
  }
2563
2625
  }
2564
2626
 
2565
- void priv_destroy_last(const bool moved = false) BOOST_NOEXCEPT_OR_NOTHROW
2566
- {
2567
- (void)moved;
2568
- const bool skip_destructor = value_traits::trivial_dctr || (value_traits::trivial_dctr_after_move && moved);
2569
- if(!skip_destructor){
2570
- value_type* const p = this->priv_raw_end() - 1;
2571
- allocator_traits_type::destroy(this->get_stored_allocator(), p);
2572
- }
2573
- --this->m_holder.m_size;
2574
- }
2575
-
2576
2627
  void priv_destroy_last_n(const size_type n) BOOST_NOEXCEPT_OR_NOTHROW
2577
2628
  {
2578
2629
  BOOST_ASSERT(n <= this->m_holder.m_size);
2579
- if(!value_traits::trivial_dctr){
2580
- T* const destroy_pos = this->priv_raw_begin() + (this->m_holder.m_size-n);
2581
- boost::container::destroy_alloc_n(this->get_stored_allocator(), destroy_pos, n);
2582
- }
2583
- this->m_holder.m_size -= n;
2630
+ boost::container::destroy_alloc_n(this->get_stored_allocator(), this->priv_raw_end() - n, n);
2631
+ this->m_holder.dec_stored_size(n);
2584
2632
  }
2585
2633
 
2586
2634
  template<class InpIt>
@@ -2588,7 +2636,7 @@ private:
2588
2636
  {
2589
2637
  T* const old_end_pos = this->priv_raw_end();
2590
2638
  T* const new_end_pos = boost::container::uninitialized_copy_alloc(this->m_holder.alloc(), first, last, old_end_pos);
2591
- this->m_holder.m_size += new_end_pos - old_end_pos;
2639
+ this->m_holder.inc_stored_size(static_cast<size_type>(new_end_pos - old_end_pos));
2592
2640
  }
2593
2641
 
2594
2642
  void priv_destroy_all() BOOST_NOEXCEPT_OR_NOTHROW
@@ -2599,35 +2647,24 @@ private:
2599
2647
  }
2600
2648
 
2601
2649
  template<class U>
2602
- iterator priv_insert(const const_iterator &p, BOOST_FWD_REF(U) x)
2650
+ BOOST_CONTAINER_FORCEINLINE iterator priv_insert(const const_iterator &p, BOOST_FWD_REF(U) u)
2603
2651
  {
2604
- BOOST_ASSERT(this->priv_in_range_or_end(p));
2605
- return this->priv_forward_range_insert
2606
- ( vector_iterator_get_ptr(p), 1, dtl::get_insert_value_proxy<T*, allocator_type>(::boost::forward<U>(x)));
2652
+ return this->emplace(p, ::boost::forward<U>(u));
2607
2653
  }
2608
2654
 
2609
- BOOST_CONTAINER_FORCEINLINE dtl::insert_copy_proxy<allocator_type, T*> priv_single_insert_proxy(const T &x)
2610
- { return dtl::insert_copy_proxy<allocator_type, T*> (x); }
2611
-
2612
- BOOST_CONTAINER_FORCEINLINE dtl::insert_move_proxy<allocator_type, T*> priv_single_insert_proxy(BOOST_RV_REF(T) x)
2613
- { return dtl::insert_move_proxy<allocator_type, T*> (x); }
2614
-
2615
2655
  template <class U>
2616
- void priv_push_back(BOOST_FWD_REF(U) u)
2656
+ BOOST_CONTAINER_FORCEINLINE void priv_push_back(BOOST_FWD_REF(U) u)
2617
2657
  {
2618
- if (BOOST_LIKELY(this->room_enough())){
2619
- //There is more memory, just construct a new object at the end
2620
- allocator_traits_type::construct
2621
- ( this->m_holder.alloc(), this->priv_raw_end(), ::boost::forward<U>(u) );
2622
- ++this->m_holder.m_size;
2623
- }
2624
- else{
2625
- this->priv_forward_range_insert_no_capacity
2626
- ( this->back_ptr(), 1
2627
- , this->priv_single_insert_proxy(::boost::forward<U>(u)), alloc_version());
2628
- }
2658
+ this->emplace_back(::boost::forward<U>(u));
2629
2659
  }
2630
2660
 
2661
+ //Overload to support compiler errors that instantiate too much
2662
+ BOOST_CONTAINER_FORCEINLINE void priv_push_back(::boost::move_detail::nat)
2663
+ {}
2664
+
2665
+ BOOST_CONTAINER_FORCEINLINE iterator priv_insert(const_iterator, ::boost::move_detail::nat)
2666
+ { return iterator(); }
2667
+
2631
2668
  BOOST_CONTAINER_FORCEINLINE dtl::insert_n_copies_proxy<allocator_type, T*> priv_resize_proxy(const T &x)
2632
2669
  { return dtl::insert_n_copies_proxy<allocator_type, T*>(x); }
2633
2670
 
@@ -2637,20 +2674,6 @@ private:
2637
2674
  BOOST_CONTAINER_FORCEINLINE dtl::insert_value_initialized_n_proxy<allocator_type, T*> priv_resize_proxy(value_init_t)
2638
2675
  { return dtl::insert_value_initialized_n_proxy<allocator_type, T*>(); }
2639
2676
 
2640
- template <class U>
2641
- void priv_resize(size_type new_size, const U& u)
2642
- {
2643
- const size_type sz = this->size();
2644
- if (new_size < sz){
2645
- //Destroy last elements
2646
- this->priv_destroy_last_n(sz - new_size);
2647
- }
2648
- else{
2649
- const size_type n = new_size - this->size();
2650
- this->priv_forward_range_insert_at_end(n, this->priv_resize_proxy(u), alloc_version());
2651
- }
2652
- }
2653
-
2654
2677
  BOOST_CONTAINER_FORCEINLINE void priv_shrink_to_fit(version_0) BOOST_NOEXCEPT_OR_NOTHROW
2655
2678
  {}
2656
2679
 
@@ -2666,17 +2689,7 @@ private:
2666
2689
  this->m_holder.m_capacity = 0;
2667
2690
  }
2668
2691
  else if(sz < cp){
2669
- //Allocate a new buffer.
2670
- //Pass the hint so that allocators can take advantage of this.
2671
- pointer const p = this->m_holder.allocate(sz);
2672
-
2673
- //We will reuse insert code, so create a dummy input iterator
2674
- #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2675
- ++this->num_alloc;
2676
- #endif
2677
- this->priv_forward_range_insert_new_allocation
2678
- ( boost::movelib::to_raw_pointer(p), sz
2679
- , this->priv_raw_begin(), 0, this->priv_dummy_empty_proxy());
2692
+ this->priv_move_to_new_buffer(sz, alloc_version());
2680
2693
  }
2681
2694
  }
2682
2695
  }
@@ -2707,20 +2720,18 @@ private:
2707
2720
  }
2708
2721
 
2709
2722
  template <class InsertionProxy>
2710
- iterator priv_forward_range_insert_no_capacity
2711
- (const pointer &pos, const size_type, const InsertionProxy , version_0)
2723
+ BOOST_CONTAINER_FORCEINLINE iterator priv_insert_forward_range_no_capacity
2724
+ (T * const, const size_type, const InsertionProxy , version_0)
2712
2725
  {
2713
- alloc_holder_t::on_capacity_overflow();
2714
- return iterator(pos);
2726
+ return alloc_holder_t::on_capacity_overflow(), iterator();
2715
2727
  }
2716
2728
 
2717
2729
  template <class InsertionProxy>
2718
- iterator priv_forward_range_insert_no_capacity
2719
- (const pointer &pos, const size_type n, const InsertionProxy insert_range_proxy, version_1)
2730
+ BOOST_CONTAINER_NOINLINE iterator priv_insert_forward_range_no_capacity
2731
+ (T *const raw_pos, const size_type n, const InsertionProxy insert_range_proxy, version_1)
2720
2732
  {
2721
2733
  //Check if we have enough memory or try to expand current memory
2722
- const size_type n_pos = pos - this->m_holder.start();
2723
- T *const raw_pos = boost::movelib::to_raw_pointer(pos);
2734
+ const size_type n_pos = static_cast<size_type>(raw_pos - this->priv_raw_begin());
2724
2735
 
2725
2736
  const size_type new_cap = this->m_holder.template next_capacity<growth_factor_type>(n);
2726
2737
  //Pass the hint so that allocators can take advantage of this.
@@ -2728,17 +2739,15 @@ private:
2728
2739
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2729
2740
  ++this->num_alloc;
2730
2741
  #endif
2731
- this->priv_forward_range_insert_new_allocation
2732
- ( new_buf, new_cap, raw_pos, n, insert_range_proxy);
2742
+ this->priv_insert_forward_range_new_allocation(new_buf, new_cap, raw_pos, n, insert_range_proxy);
2733
2743
  return iterator(this->m_holder.start() + n_pos);
2734
2744
  }
2735
2745
 
2736
2746
  template <class InsertionProxy>
2737
- iterator priv_forward_range_insert_no_capacity
2738
- (const pointer &pos, const size_type n, const InsertionProxy insert_range_proxy, version_2)
2747
+ BOOST_CONTAINER_NOINLINE iterator priv_insert_forward_range_no_capacity
2748
+ (T *const raw_pos, const size_type n, const InsertionProxy insert_range_proxy, version_2)
2739
2749
  {
2740
2750
  //Check if we have enough memory or try to expand current memory
2741
- T *const raw_pos = boost::movelib::to_raw_pointer(pos);
2742
2751
  const size_type n_pos = raw_pos - this->priv_raw_begin();
2743
2752
 
2744
2753
  //There is not enough memory, allocate a new
@@ -2757,14 +2766,15 @@ private:
2757
2766
  #endif
2758
2767
  this->m_holder.capacity(real_cap);
2759
2768
  //Expand forward
2760
- this->priv_forward_range_insert_expand_forward(raw_pos, n, insert_range_proxy);
2769
+ this->priv_insert_forward_range_expand_forward
2770
+ (raw_pos, n, insert_range_proxy, dtl::bool_<dtl::is_single_value_proxy<InsertionProxy>::value>());
2761
2771
  }
2762
2772
  //Backwards (and possibly forward) expansion
2763
2773
  else{
2764
2774
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2765
2775
  ++this->num_expand_bwd;
2766
2776
  #endif
2767
- this->priv_forward_range_insert_expand_backwards
2777
+ this->priv_insert_forward_range_expand_backwards
2768
2778
  (boost::movelib::to_raw_pointer(ret), real_cap, raw_pos, n, insert_range_proxy);
2769
2779
  }
2770
2780
  }
@@ -2773,7 +2783,7 @@ private:
2773
2783
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2774
2784
  ++this->num_alloc;
2775
2785
  #endif
2776
- this->priv_forward_range_insert_new_allocation
2786
+ this->priv_insert_forward_range_new_allocation
2777
2787
  ( boost::movelib::to_raw_pointer(ret), real_cap, raw_pos, n, insert_range_proxy);
2778
2788
  }
2779
2789
 
@@ -2781,46 +2791,53 @@ private:
2781
2791
  }
2782
2792
 
2783
2793
  template <class InsertionProxy>
2784
- iterator priv_forward_range_insert
2794
+ BOOST_CONTAINER_FORCEINLINE iterator priv_insert_forward_range
2785
2795
  (const pointer &pos, const size_type n, const InsertionProxy insert_range_proxy)
2786
2796
  {
2787
2797
  BOOST_ASSERT(this->m_holder.capacity() >= this->m_holder.m_size);
2798
+ T *const p = boost::movelib::to_raw_pointer(pos);
2788
2799
  //Check if we have enough memory or try to expand current memory
2789
- const size_type remaining = this->m_holder.capacity() - this->m_holder.m_size;
2790
-
2791
- bool same_buffer_start = n <= remaining;
2792
- if (!same_buffer_start){
2793
- return priv_forward_range_insert_no_capacity(pos, n, insert_range_proxy, alloc_version());
2800
+ if (BOOST_LIKELY(n <= (this->m_holder.capacity() - this->m_holder.m_size))){
2801
+ //Expand forward
2802
+ this->priv_insert_forward_range_expand_forward
2803
+ (p, n, insert_range_proxy, dtl::bool_<dtl::is_single_value_proxy<InsertionProxy>::value>());
2804
+ return iterator(pos);
2794
2805
  }
2795
2806
  else{
2796
- //Expand forward
2797
- T *const raw_pos = boost::movelib::to_raw_pointer(pos);
2798
- const size_type n_pos = raw_pos - this->priv_raw_begin();
2799
- this->priv_forward_range_insert_expand_forward(raw_pos, n, insert_range_proxy);
2800
- return iterator(this->m_holder.start() + n_pos);
2807
+ return this->priv_insert_forward_range_no_capacity(p, n, insert_range_proxy, alloc_version());
2801
2808
  }
2802
2809
  }
2803
2810
 
2804
- template <class InsertionProxy>
2805
- iterator priv_forward_range_insert_at_end
2806
- (const size_type n, const InsertionProxy insert_range_proxy, version_0)
2811
+ template <class U>
2812
+ void priv_resize(const size_type new_size, const U &u, version_0)
2807
2813
  {
2808
- //Check if we have enough memory or try to expand current memory
2809
- const size_type remaining = this->m_holder.capacity() - this->m_holder.m_size;
2810
-
2811
- if (n > remaining){
2814
+ const size_type sz = this->m_holder.m_size;
2815
+ if (new_size > this->capacity()){
2812
2816
  //This will trigger an error
2813
2817
  alloc_holder_t::on_capacity_overflow();
2814
2818
  }
2815
- this->priv_forward_range_insert_at_end_expand_forward(n, insert_range_proxy);
2816
- return this->end();
2819
+ else if (new_size < sz){
2820
+ //Destroy last elements
2821
+ this->priv_destroy_last_n(sz - new_size);
2822
+ }
2823
+ else{
2824
+ T* const old_finish = this->priv_raw_end();
2825
+ this->priv_resize_proxy(u).uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, new_size - sz);
2826
+ this->m_holder.set_stored_size(new_size);
2827
+ }
2817
2828
  }
2818
2829
 
2819
- template <class InsertionProxy, class AllocVersion>
2820
- BOOST_CONTAINER_FORCEINLINE iterator priv_forward_range_insert_at_end
2821
- (const size_type n, const InsertionProxy insert_range_proxy, AllocVersion)
2830
+ template <class U, class AllocVersion>
2831
+ void priv_resize(const size_type new_size, const U &u, AllocVersion)
2822
2832
  {
2823
- return this->priv_forward_range_insert(this->back_ptr(), n, insert_range_proxy);
2833
+ const size_type sz = this->m_holder.m_size;
2834
+ if (new_size < sz){
2835
+ //Destroy last elements
2836
+ this->priv_destroy_last_n(sz - new_size);
2837
+ }
2838
+ else {
2839
+ this->priv_insert_forward_range(this->back_ptr(), new_size - sz, this->priv_resize_proxy(u));
2840
+ }
2824
2841
  }
2825
2842
 
2826
2843
  //Takes the range pointed by [first_pos, last_pos) and shifts it to the right
@@ -2916,103 +2933,69 @@ private:
2916
2933
  BOOST_CONTAINER_FORCEINLINE T* priv_raw_end() const
2917
2934
  { return this->priv_raw_begin() + this->m_holder.m_size; }
2918
2935
 
2919
- template <class InsertionProxy>
2920
- void priv_forward_range_insert_at_end_expand_forward(const size_type n, InsertionProxy insert_range_proxy)
2936
+ template <class InsertionProxy> //inline single-element version as it is significantly smaller
2937
+ BOOST_CONTAINER_FORCEINLINE void priv_insert_forward_range_expand_forward
2938
+ (T* const raw_pos, const size_type, InsertionProxy insert_range_proxy, dtl::true_type)
2921
2939
  {
2922
- T* const old_finish = this->priv_raw_end();
2923
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n);
2924
- this->m_holder.m_size += n;
2925
- }
2926
-
2927
- template <class InsertionProxy>
2928
- void priv_forward_range_insert_expand_forward(T* const pos, const size_type n, InsertionProxy insert_range_proxy)
2929
- {
2930
- //n can't be 0, because there is nothing to do in that case
2931
- if(BOOST_UNLIKELY(!n)) return;
2940
+ BOOST_ASSERT(this->room_enough());
2932
2941
  //There is enough memory
2933
2942
  T* const old_finish = this->priv_raw_end();
2934
- const size_type elems_after = old_finish - pos;
2943
+ allocator_type & a = this->m_holder.alloc();
2935
2944
 
2936
- if (!elems_after){
2937
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n);
2938
- this->m_holder.m_size += n;
2945
+ if (old_finish == raw_pos){
2946
+ insert_range_proxy.uninitialized_copy_n_and_update(a, old_finish, 1);
2947
+ ++this->m_holder.m_size;
2939
2948
  }
2940
- else if (elems_after >= n){
2949
+ else{
2941
2950
  //New elements can be just copied.
2942
2951
  //Move to uninitialized memory last objects
2943
- ::boost::container::uninitialized_move_alloc
2944
- (this->m_holder.alloc(), old_finish - n, old_finish, old_finish);
2945
- this->m_holder.m_size += n;
2952
+ T * const before_old_finish = old_finish-1;
2953
+
2954
+ allocator_traits_type::construct(a, old_finish, ::boost::move(*before_old_finish));
2955
+ ++this->m_holder.m_size;
2946
2956
  //Copy previous to last objects to the initialized end
2947
- boost::container::move_backward(pos, old_finish - n, old_finish);
2948
- //Insert new objects in the pos
2949
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, n);
2950
- }
2951
- else {
2952
- //The new elements don't fit in the [pos, end()) range.
2953
-
2954
- //Copy old [pos, end()) elements to the uninitialized memory (a gap is created)
2955
- ::boost::container::uninitialized_move_alloc(this->m_holder.alloc(), pos, old_finish, pos + n);
2956
- BOOST_TRY{
2957
- //Copy first new elements in pos (gap is still there)
2958
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, elems_after);
2959
- //Copy to the beginning of the unallocated zone the last new elements (the gap is closed).
2960
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n - elems_after);
2961
- this->m_holder.m_size += n;
2962
- }
2963
- BOOST_CATCH(...){
2964
- boost::container::destroy_alloc_n(this->get_stored_allocator(), pos + n, elems_after);
2965
- BOOST_RETHROW
2966
- }
2967
- BOOST_CATCH_END
2957
+ boost::container::move_backward(raw_pos, before_old_finish, old_finish);
2958
+ //Insert new objects in the raw_pos
2959
+ insert_range_proxy.copy_n_and_update(a, raw_pos, 1);
2968
2960
  }
2969
2961
  }
2970
2962
 
2971
2963
  template <class InsertionProxy>
2972
- void priv_forward_range_insert_new_allocation
2964
+ BOOST_CONTAINER_FORCEINLINE void priv_insert_forward_range_expand_forward(T* const raw_pos, const size_type n, InsertionProxy insert_range_proxy, dtl::false_type)
2965
+ {
2966
+ //There is enough memory
2967
+ boost::container::expand_forward_and_insert_alloc
2968
+ ( this->m_holder.alloc(), raw_pos, this->priv_raw_end(), n, insert_range_proxy);
2969
+ this->m_holder.inc_stored_size(n);
2970
+ }
2971
+
2972
+ template <class InsertionProxy>
2973
+ void priv_insert_forward_range_new_allocation
2973
2974
  (T* const new_start, size_type new_cap, T* const pos, const size_type n, InsertionProxy insert_range_proxy)
2974
2975
  {
2975
2976
  //n can be zero, if we want to reallocate!
2976
- T *new_finish = new_start;
2977
- T *old_finish;
2978
- //Anti-exception rollbacks
2979
- typename value_traits::ArrayDeallocator new_buffer_deallocator(new_start, this->m_holder.alloc(), new_cap);
2980
- typename value_traits::ArrayDestructor new_values_destroyer(new_start, this->m_holder.alloc(), 0u);
2981
-
2982
- //Initialize with [begin(), pos) old buffer
2983
- //the start of the new buffer
2984
- T * const old_buffer = this->priv_raw_begin();
2985
- if(old_buffer){
2986
- new_finish = ::boost::container::uninitialized_move_alloc
2987
- (this->m_holder.alloc(), this->priv_raw_begin(), pos, old_finish = new_finish);
2988
- new_values_destroyer.increment_size(new_finish - old_finish);
2989
- }
2990
- //Initialize new objects, starting from previous point
2991
- old_finish = new_finish;
2992
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n);
2993
- new_finish += n;
2994
- new_values_destroyer.increment_size(new_finish - old_finish);
2995
- //Initialize from the rest of the old buffer,
2996
- //starting from previous point
2997
- if(old_buffer){
2998
- new_finish = ::boost::container::uninitialized_move_alloc
2999
- (this->m_holder.alloc(), pos, old_buffer + this->m_holder.m_size, new_finish);
3000
- //Destroy and deallocate old elements
3001
- //If there is allocated memory, destroy and deallocate
3002
- if(!value_traits::trivial_dctr_after_move)
3003
- boost::container::destroy_alloc_n(this->get_stored_allocator(), old_buffer, this->m_holder.m_size);
2977
+ allocator_type &a = this->m_holder.alloc();
2978
+ T * const raw_old_buffer = this->priv_raw_begin();
2979
+
2980
+ typename value_traits::ArrayDeallocator new_buffer_deallocator(new_start, a, new_cap);
2981
+ boost::container::uninitialized_move_and_insert_alloc
2982
+ (a, raw_old_buffer, pos, this->priv_raw_end(), new_start, n, insert_range_proxy);
2983
+ new_buffer_deallocator.release();
2984
+
2985
+ //Destroy and deallocate old elements
2986
+ if(raw_old_buffer){
2987
+ BOOST_IF_CONSTEXPR(!has_trivial_destructor_after_move<value_type>::value)
2988
+ boost::container::destroy_alloc_n(a, raw_old_buffer, this->m_holder.m_size);
3004
2989
  this->m_holder.deallocate(this->m_holder.start(), this->m_holder.capacity());
3005
2990
  }
2991
+
3006
2992
  this->m_holder.start(new_start);
3007
- this->m_holder.m_size = size_type(new_finish - new_start);
2993
+ this->m_holder.inc_stored_size(n);
3008
2994
  this->m_holder.capacity(new_cap);
3009
- //All construction successful, disable rollbacks
3010
- new_values_destroyer.release();
3011
- new_buffer_deallocator.release();
3012
2995
  }
3013
2996
 
3014
2997
  template <class InsertionProxy>
3015
- void priv_forward_range_insert_expand_backwards
2998
+ void priv_insert_forward_range_expand_backwards
3016
2999
  (T* const new_start, const size_type new_capacity,
3017
3000
  T* const pos, const size_type n, InsertionProxy insert_range_proxy)
3018
3001
  {
@@ -3021,28 +3004,31 @@ private:
3021
3004
  T* const old_start = this->priv_raw_begin();
3022
3005
  const size_type old_size = this->m_holder.m_size;
3023
3006
  T* const old_finish = old_start + old_size;
3007
+ allocator_type &a = this->m_holder.alloc();
3008
+
3009
+ //Update the vector buffer information to a safe state
3010
+ this->m_holder.start(new_start);
3011
+ this->m_holder.capacity(new_capacity);
3012
+ this->m_holder.m_size = 0;
3024
3013
 
3025
3014
  //We can have 8 possibilities:
3026
3015
  const size_type elemsbefore = static_cast<size_type>(pos - old_start);
3027
3016
  const size_type s_before = static_cast<size_type>(old_start - new_start);
3028
3017
  const size_type before_plus_new = elemsbefore + n;
3029
3018
 
3030
- //Update the vector buffer information to a safe state
3031
- this->m_holder.start(new_start);
3032
- this->m_holder.capacity(new_capacity);
3033
- this->m_holder.m_size = 0;
3019
+ typedef typename value_traits::ArrayDestructor array_destructor_t;
3034
3020
 
3035
3021
  //If anything goes wrong, this object will destroy
3036
3022
  //all the old objects to fulfill previous vector state
3037
- typename value_traits::ArrayDestructor old_values_destroyer(old_start, this->m_holder.alloc(), old_size);
3023
+ array_destructor_t old_values_destroyer(old_start, a, old_size);
3038
3024
  //Check if s_before is big enough to hold the beginning of old data + new data
3039
3025
  if(s_before >= before_plus_new){
3040
3026
  //Copy first old values before pos, after that the new objects
3041
3027
  T *const new_elem_pos =
3042
- ::boost::container::uninitialized_move_alloc(this->m_holder.alloc(), old_start, pos, new_start);
3043
- this->m_holder.m_size = elemsbefore;
3044
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), new_elem_pos, n);
3045
- this->m_holder.m_size = before_plus_new;
3028
+ ::boost::container::uninitialized_move_alloc(a, old_start, pos, new_start);
3029
+ this->m_holder.set_stored_size(elemsbefore);
3030
+ insert_range_proxy.uninitialized_copy_n_and_update(a, new_elem_pos, n);
3031
+ this->m_holder.set_stored_size(before_plus_new);
3046
3032
  const size_type new_size = old_size + n;
3047
3033
  //Check if s_before is so big that even copying the old data + new data
3048
3034
  //there is a gap between the new data and the old data
@@ -3059,15 +3045,14 @@ private:
3059
3045
  //
3060
3046
  //Now initialize the rest of memory with the last old values
3061
3047
  if(before_plus_new != new_size){ //Special case to avoid operations in back insertion
3062
- ::boost::container::uninitialized_move_alloc
3063
- (this->m_holder.alloc(), pos, old_finish, new_start + before_plus_new);
3048
+ ::boost::container::uninitialized_move_alloc(a, pos, old_finish, new_start + before_plus_new);
3064
3049
  //All new elements correctly constructed, avoid new element destruction
3065
- this->m_holder.m_size = new_size;
3050
+ this->m_holder.set_stored_size(new_size);
3066
3051
  }
3067
3052
  //Old values destroyed automatically with "old_values_destroyer"
3068
3053
  //when "old_values_destroyer" goes out of scope unless the have trivial
3069
3054
  //destructor after move.
3070
- if(value_traits::trivial_dctr_after_move)
3055
+ BOOST_IF_CONSTEXPR(value_traits::trivial_dctr_after_move)
3071
3056
  old_values_destroyer.release();
3072
3057
  }
3073
3058
  //s_before is so big that divides old_end
@@ -3084,30 +3069,29 @@ private:
3084
3069
  //
3085
3070
  //Now initialize the rest of memory with the last old values
3086
3071
  //All new elements correctly constructed, avoid new element destruction
3087
- const size_type raw_gap = s_before - before_plus_new;
3088
- if(!value_traits::trivial_dctr){
3072
+ BOOST_IF_CONSTEXPR(!value_traits::trivial_dctr){
3073
+ const size_type raw_gap = s_before - before_plus_new;
3089
3074
  //Now initialize the rest of s_before memory with the
3090
3075
  //first of elements after new values
3091
- ::boost::container::uninitialized_move_alloc_n
3092
- (this->m_holder.alloc(), pos, raw_gap, new_start + before_plus_new);
3076
+ ::boost::container::uninitialized_move_alloc_n(a, pos, raw_gap, new_start + before_plus_new);
3093
3077
  //Now we have a contiguous buffer so program trailing element destruction
3094
3078
  //and update size to the final size.
3095
3079
  old_values_destroyer.shrink_forward(new_size-s_before);
3096
- this->m_holder.m_size = new_size;
3080
+ this->m_holder.set_stored_size(new_size);
3097
3081
  //Now move remaining last objects in the old buffer begin
3098
3082
  T * const remaining_pos = pos + raw_gap;
3099
3083
  if(remaining_pos != old_start){ //Make sure data has to be moved
3100
3084
  ::boost::container::move(remaining_pos, old_finish, old_start);
3101
3085
  }
3102
3086
  //Once moved, avoid calling the destructors if trivial after move
3103
- if(value_traits::trivial_dctr_after_move){
3087
+ BOOST_IF_CONSTEXPR(value_traits::trivial_dctr_after_move){
3104
3088
  old_values_destroyer.release();
3105
3089
  }
3106
3090
  }
3107
3091
  else{ //If trivial destructor, we can uninitialized copy + copy in a single uninitialized copy
3108
3092
  ::boost::container::uninitialized_move_alloc_n
3109
- (this->m_holder.alloc(), pos, static_cast<size_type>(old_finish - pos), new_start + before_plus_new);
3110
- this->m_holder.m_size = new_size;
3093
+ (a, pos, static_cast<size_type>(old_finish - pos), new_start + before_plus_new);
3094
+ this->m_holder.set_stored_size(new_size);
3111
3095
  old_values_destroyer.release();
3112
3096
  }
3113
3097
  }
@@ -3161,8 +3145,7 @@ private:
3161
3145
  //|___________|_____|_________|_____________________|
3162
3146
  //
3163
3147
  //Copy the first part of old_begin to raw_mem
3164
- ::boost::container::uninitialized_move_alloc_n
3165
- (this->m_holder.alloc(), old_start, s_before, new_start);
3148
+ ::boost::container::uninitialized_move_alloc_n(a, old_start, s_before, new_start);
3166
3149
  //The buffer is all constructed until old_end,
3167
3150
  //so program trailing destruction and assign final size
3168
3151
  //if !do_after, s_before+n otherwise.
@@ -3174,17 +3157,18 @@ private:
3174
3157
  }
3175
3158
  else{
3176
3159
  new_1st_range = n;
3177
- if(value_traits::trivial_dctr_after_move)
3160
+ BOOST_IF_CONSTEXPR(value_traits::trivial_dctr_after_move){
3178
3161
  old_values_destroyer.release();
3162
+ }
3179
3163
  else{
3180
3164
  old_values_destroyer.shrink_forward(old_size - (s_before - n));
3181
3165
  }
3182
3166
  }
3183
- this->m_holder.m_size = old_size + new_1st_range;
3167
+ this->m_holder.set_stored_size(old_size + new_1st_range);
3184
3168
  //Now copy the second part of old_begin overwriting itself
3185
3169
  T *const next = ::boost::container::move(old_start + s_before, pos, old_start);
3186
3170
  //Now copy the new_beg elements
3187
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), next, new_1st_range);
3171
+ insert_range_proxy.copy_n_and_update(a, next, new_1st_range);
3188
3172
 
3189
3173
  //If there is no after work and the last old part needs to be moved to front, do it
3190
3174
  if(!do_after && (n != s_before)){
@@ -3220,33 +3204,37 @@ private:
3220
3204
  //
3221
3205
  //First copy whole old_begin and part of new to raw_mem
3222
3206
  T * const new_pos = ::boost::container::uninitialized_move_alloc
3223
- (this->m_holder.alloc(), old_start, pos, new_start);
3224
- this->m_holder.m_size = elemsbefore;
3207
+ (a, old_start, pos, new_start);
3208
+ this->m_holder.set_stored_size(elemsbefore);
3225
3209
  const size_type mid_n = s_before - elemsbefore;
3226
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), new_pos, mid_n);
3210
+ insert_range_proxy.uninitialized_copy_n_and_update(a, new_pos, mid_n);
3227
3211
  //The buffer is all constructed until old_end,
3228
3212
  //release destroyer
3229
- this->m_holder.m_size = old_size + s_before;
3213
+ this->m_holder.set_stored_size(old_size + s_before);
3230
3214
  old_values_destroyer.release();
3231
3215
 
3232
3216
  if(do_after){
3233
3217
  //Copy new_beg part
3234
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), old_start, elemsbefore);
3218
+ insert_range_proxy.copy_n_and_update(a, old_start, elemsbefore);
3235
3219
  }
3236
3220
  else{
3237
3221
  //Copy all new elements
3238
3222
  const size_type rest_new = n - mid_n;
3239
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), old_start, rest_new);
3223
+ insert_range_proxy.copy_n_and_update(a, old_start, rest_new);
3224
+
3240
3225
  T* const move_start = old_start + rest_new;
3241
3226
  //Displace old_end, but make sure data has to be moved
3242
3227
  T* const move_end = move_start != pos ? ::boost::container::move(pos, old_finish, move_start)
3243
3228
  : old_finish;
3229
+ (void)move_end; //To avoid warnings of unused initialization for move_end in case
3230
+ //trivial_dctr_after_move is true
3244
3231
  //Destroy remaining moved elements from old_end except if they
3245
3232
  //have trivial destructor after being moved
3246
- size_type n_destroy = s_before - n;
3247
- if(!value_traits::trivial_dctr_after_move)
3248
- boost::container::destroy_alloc_n(this->get_stored_allocator(), move_end, n_destroy);
3249
- this->m_holder.m_size -= n_destroy;
3233
+ const size_type n_destroy = s_before - n;
3234
+ BOOST_IF_CONSTEXPR(!value_traits::trivial_dctr_after_move){
3235
+ boost::container::destroy_alloc_n(a, move_end, n_destroy);
3236
+ }
3237
+ this->m_holder.dec_stored_size(n_destroy);
3250
3238
  }
3251
3239
  }
3252
3240
 
@@ -3288,14 +3276,13 @@ private:
3288
3276
  //
3289
3277
  //First copy the part of old_end raw_mem
3290
3278
  T* finish_n = old_finish - n_after;
3291
- ::boost::container::uninitialized_move_alloc
3292
- (this->m_holder.alloc(), finish_n, old_finish, old_finish);
3293
- this->m_holder.m_size += n_after;
3279
+ ::boost::container::uninitialized_move_alloc(a, finish_n, old_finish, old_finish);
3280
+ this->m_holder.inc_stored_size(n_after);
3294
3281
  //Displace the rest of old_end to the new position
3295
3282
  boost::container::move_backward(pos, finish_n, old_finish);
3296
3283
  //Now overwrite with new_end
3297
3284
  //The new_end part is [first + (n - n_after), last)
3298
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, n_after);
3285
+ insert_range_proxy.copy_n_and_update(a, pos, n_after);
3299
3286
  }
3300
3287
  else {
3301
3288
  //The raw_mem from end will divide new_end part
@@ -3309,23 +3296,20 @@ private:
3309
3296
  // _____________________________________________________________
3310
3297
  //| old_begin + new_beg | new_end |old_end | raw_mem |
3311
3298
  //|__________________________|_______________|________|_________|
3312
- //
3313
3299
 
3314
- const size_type mid_last_dist = n_after - elemsafter;
3315
3300
  //First initialize data in raw memory
3301
+ const size_type mid_last_dist = n_after - elemsafter;
3316
3302
 
3317
3303
  //Copy to the old_end part to the uninitialized zone leaving a gap.
3318
- ::boost::container::uninitialized_move_alloc
3319
- (this->m_holder.alloc(), pos, old_finish, old_finish + mid_last_dist);
3304
+ ::boost::container::uninitialized_move_alloc(a, pos, old_finish, old_finish + mid_last_dist);
3320
3305
 
3321
- typename value_traits::ArrayDestructor old_end_destroyer
3322
- (old_finish + mid_last_dist, this->m_holder.alloc(), old_finish - pos);
3306
+ array_destructor_t old_end_destroyer(old_finish + mid_last_dist, a, static_cast<size_type>(old_finish - pos));
3323
3307
 
3324
3308
  //Copy the first part to the already constructed old_end zone
3325
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, elemsafter);
3309
+ insert_range_proxy.copy_n_and_update(a, pos, elemsafter);
3326
3310
  //Copy the rest to the uninitialized zone filling the gap
3327
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, mid_last_dist);
3328
- this->m_holder.m_size += n_after;
3311
+ insert_range_proxy.uninitialized_copy_n_and_update(a, old_finish, mid_last_dist);
3312
+ this->m_holder.inc_stored_size(n_after);
3329
3313
  old_end_destroyer.release();
3330
3314
  }
3331
3315
  }