passenger 6.1.0 → 6.1.1

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 (440) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +32 -2
  3. data/Rakefile +6 -13
  4. data/bin/passenger-install-apache2-module +15 -19
  5. data/bin/passenger-install-nginx-module +42 -44
  6. data/bin/passenger-status +9 -10
  7. data/build/common_library.rb +4 -4
  8. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  9. data/build/test_basics.rb +4 -3
  10. data/dev/copy_boost_headers +54 -40
  11. data/dev/ruby_server.rb +1 -1
  12. data/src/agent/Core/Config.h +1 -1
  13. data/src/agent/Core/Controller/Config.h +1 -1
  14. data/src/agent/Watchdog/Config.h +1 -1
  15. data/src/cxx_supportlib/Constants.h +1 -1
  16. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
  17. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
  18. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
  19. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
  20. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
  21. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
  22. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
  23. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
  24. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
  25. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
  26. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
  27. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
  28. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
  30. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
  31. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
  32. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
  33. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
  34. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
  35. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
  36. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
  37. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
  38. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
  39. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
  40. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
  42. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
  43. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
  44. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
  45. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
  46. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
  47. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
  48. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
  49. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
  50. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
  51. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
  52. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
  53. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
  54. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
  55. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
  56. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
  57. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
  58. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
  59. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
  62. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
  63. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
  64. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
  66. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
  67. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
  69. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
  70. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
  71. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
  72. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
  73. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
  75. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
  76. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
  78. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
  79. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
  115. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
  116. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
  117. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
  120. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
  121. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
  123. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
  125. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
  129. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
  130. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
  131. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
  132. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
  134. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
  135. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
  136. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
  137. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
  139. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
  142. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
  144. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
  145. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
  148. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
  149. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
  151. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
  154. data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
  155. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
  156. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
  157. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
  160. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
  161. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
  165. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
  169. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
  170. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
  171. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
  172. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
  174. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
  179. data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
  181. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
  182. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
  183. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
  184. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
  185. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
  186. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
  187. data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
  189. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
  190. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
  191. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
  196. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
  198. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
  201. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
  203. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
  204. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
  206. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
  207. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
  211. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
  212. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
  216. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
  219. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
  220. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
  221. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
  223. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
  224. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
  225. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
  229. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
  232. data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
  233. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
  235. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
  236. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
  237. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
  239. data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
  249. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
  250. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
  251. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
  252. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
  253. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
  254. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
  255. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
  256. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
  257. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
  259. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
  261. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
  264. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
  267. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
  268. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
  271. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
  272. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
  273. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
  274. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
  275. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
  276. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
  277. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
  298. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
  299. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
  314. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
  315. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
  316. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
  317. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
  319. data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
  320. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
  321. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  326. data/src/nginx_module/ContentHandler.c +2 -0
  327. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
  328. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
  329. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
  330. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
  331. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  332. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
  333. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
  334. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
  335. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
  336. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
  337. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
  338. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
  339. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
  340. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
  341. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  342. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  343. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  344. metadata +26 -99
  345. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
  346. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
  347. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
  348. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
  349. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
  350. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
  351. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
  352. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
  353. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
  354. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
  355. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
  356. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
  357. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
  358. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
  359. data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
  360. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
  361. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
  362. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
  363. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
  364. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
  365. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
  366. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
  367. data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
  368. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
  369. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
  370. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
  371. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
  372. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
  373. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
  374. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
  375. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
  376. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
  377. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
  378. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
  379. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
  380. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
  381. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
  382. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
  383. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
  384. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
  385. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
  386. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
  387. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
  388. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
  389. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
  390. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
  391. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
  392. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
  393. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
  394. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
  395. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
  396. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
  397. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
  398. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
  399. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
  400. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
  401. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
  402. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
  403. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
  404. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
  405. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
  406. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
  407. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
  408. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
  409. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
  410. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
  411. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
  412. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
  413. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
  414. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
  415. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
  416. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
  417. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
  418. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
  419. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
  420. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
  421. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
  422. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
  423. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
  424. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
  425. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
  426. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
  427. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
  428. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
  429. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
  430. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
  431. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
  432. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
  433. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
  434. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
  435. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
  436. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
  437. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
  438. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
  439. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
  440. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +0 -94
@@ -1115,10 +1115,10 @@ class tree
1115
1115
  std::pair<iterator, bool> insert_or_assign(const_iterator hint, BOOST_FWD_REF(KeyType) key, BOOST_FWD_REF(M) obj)
1116
1116
  {
1117
1117
  insert_commit_data data;
1118
- const key_type & k = key; //Support emulated rvalue references
1118
+ const typename remove_cvref<KeyType>::type & k = key; //Support emulated rvalue references
1119
1119
  std::pair<iiterator, bool> ret =
1120
- hint == const_iterator() ? this->icont().insert_unique_check(k, data)
1121
- : this->icont().insert_unique_check(hint.get(), k, data);
1120
+ hint == const_iterator() ? this->icont().insert_unique_check(k, KeyNodeCompare(key_comp()), data)
1121
+ : this->icont().insert_unique_check(hint.get(), k, KeyNodeCompare(key_comp()), data);
1122
1122
  if(ret.second){
1123
1123
  ret.first = this->priv_insert_or_assign_commit(boost::forward<KeyType>(key), boost::forward<M>(obj), data);
1124
1124
  }
@@ -1152,8 +1152,11 @@ class tree
1152
1152
  !dtl::is_convertible<K, iterator>::value && //not convertible to iterator
1153
1153
  !dtl::is_convertible<K, const_iterator>::value //not convertible to const_iterator
1154
1154
  , size_type>::type
1155
- erase(const K& k)
1156
- { return AllocHolder::erase_key(k, KeyNodeCompare(key_comp()), alloc_version()); }
1155
+ erase(BOOST_FWD_REF(K) key)
1156
+ {
1157
+ const typename remove_cvref<K>::type & k = key; //Support emulated rvalue references
1158
+ return AllocHolder::erase_key(k, KeyNodeCompare(key_comp()), alloc_version());
1159
+ }
1157
1160
 
1158
1161
  template <class K>
1159
1162
  inline typename dtl::enable_if_c<
@@ -1230,6 +1230,15 @@ class devector
1230
1230
  BOOST_ASSERT(invariants_ok());
1231
1231
  }
1232
1232
 
1233
+ inline size_type front_capacity() const
1234
+ {
1235
+ return m_.back_idx;
1236
+ }
1237
+
1238
+ inline size_type back_capacity() const
1239
+ {
1240
+ return size_type(m_.capacity - m_.front_idx);
1241
+ }
1233
1242
 
1234
1243
  /**
1235
1244
  * [MoveInsertable]: http://en.cppreference.com/w/cpp/concept/MoveInsertable
@@ -2263,16 +2272,6 @@ class devector
2263
2272
  return boost::intrusive::pointer_traits<pointer>::const_cast_from(i);
2264
2273
  }
2265
2274
 
2266
- inline size_type front_capacity() const
2267
- {
2268
- return m_.back_idx;
2269
- }
2270
-
2271
- inline size_type back_capacity() const
2272
- {
2273
- return size_type(m_.capacity - m_.front_idx);
2274
- }
2275
-
2276
2275
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
2277
2276
 
2278
2277
  inline T* priv_raw_begin() BOOST_NOEXCEPT
@@ -3041,6 +3040,28 @@ class devector
3041
3040
  #endif // ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
3042
3041
  };
3043
3042
 
3043
+ //! <b>Effects</b>: Erases all elements that compare equal to v from the container c.
3044
+ //!
3045
+ //! <b>Complexity</b>: Linear.
3046
+ template <class T, class A, class O, class U>
3047
+ inline typename devector<T, A, O>::size_type erase(devector<T, A, O>& c, const U& v)
3048
+ {
3049
+ typename devector<T, A, O>::size_type old_size = c.size();
3050
+ c.erase(boost::container::remove(c.begin(), c.end(), v), c.end());
3051
+ return old_size - c.size();
3052
+ }
3053
+
3054
+ //! <b>Effects</b>: Erases all elements that satisfy the predicate pred from the container c.
3055
+ //!
3056
+ //! <b>Complexity</b>: Linear.
3057
+ template <class T, class A, class O, class Pred>
3058
+ inline typename devector<T, A, O>::size_type erase_if(devector<T, A, O>& c, Pred pred)
3059
+ {
3060
+ typename devector<T, A, O>::size_type old_size = c.size();
3061
+ c.erase(boost::container::remove_if(c.begin(), c.end(), pred), c.end());
3062
+ return old_size - c.size();
3063
+ }
3064
+
3044
3065
  }} // namespace boost::container
3045
3066
 
3046
3067
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
@@ -30,7 +30,6 @@
30
30
  #include <boost/container/detail/type_traits.hpp>
31
31
  #include <boost/container/detail/mpl.hpp>
32
32
  #include <boost/container/detail/algorithm.hpp> //equal()
33
- #include <boost/container/detail/container_or_allocator_rebind.hpp>
34
33
  #include <boost/container/detail/pair.hpp>
35
34
  // move
36
35
  #include <boost/move/utility_core.hpp>
@@ -54,6 +53,10 @@
54
53
  #define BOOST_CONTAINER_STD_PAIR_IS_MOVABLE
55
54
  #endif
56
55
 
56
+ #ifndef BOOST_CONTAINER_STD_PAIR_IS_MOVABLE
57
+ #include <boost/container/detail/container_or_allocator_rebind.hpp>
58
+ #endif
59
+
57
60
  //for C++03 compilers, were type-puning is the only option for std::pair
58
61
  //disable strict aliasing to reduce problems.
59
62
  #if defined(BOOST_GCC) && (BOOST_GCC >= 100000) && !defined(BOOST_CONTAINER_STD_PAIR_IS_MOVABLE)
@@ -845,8 +848,7 @@ class flat_map
845
848
  //! to the element obtained while it is held in the node handle are invalidated, and pointers and
846
849
  //! references obtained to that element before it was extracted become valid.
847
850
  //!
848
- //! Returns: The bool component is true if the insertion took place and false if the assignment
849
- //! took place. The iterator component is pointing at the element that was inserted or updated.
851
+ //! <b>Returns</b>: The returned iterator points to the map element whose key is equivalent to k.
850
852
  //!
851
853
  //! Complexity: Logarithmic in the size of the container in general, but amortized constant if
852
854
  //! the new element is inserted just before hint.
@@ -869,8 +871,7 @@ class flat_map
869
871
  //! to the element obtained while it is held in the node handle are invalidated, and pointers and
870
872
  //! references obtained to that element before it was extracted become valid.
871
873
  //!
872
- //! Returns: The bool component is true if the insertion took place and false if the assignment
873
- //! took place. The iterator component is pointing at the element that was inserted or updated.
874
+ //! <b>Returns</b>: The returned iterator points to the map element whose key is equivalent to k.
874
875
  //!
875
876
  //! Complexity: Logarithmic in the size of the container in general, but amortized constant if
876
877
  //! the new element is inserted just before hint.
@@ -940,7 +941,7 @@ class flat_map
940
941
 
941
942
  #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
942
943
 
943
- //! <b>Effects</b>: Inserts an object x of type T constructed with
944
+ //! <b>Effects</b>: Inserts an object x of type value_type constructed with
944
945
  //! std::forward<Args>(args)... if and only if there is no element in the container
945
946
  //! with key equivalent to the key of x.
946
947
  //!
@@ -956,7 +957,7 @@ class flat_map
956
957
  inline std::pair<iterator,bool> emplace(BOOST_FWD_REF(Args)... args)
957
958
  { return dtl::force_copy< std::pair<iterator, bool> >(m_flat_tree.emplace_unique(boost::forward<Args>(args)...)); }
958
959
 
959
- //! <b>Effects</b>: Inserts an object of type T constructed with
960
+ //! <b>Effects</b>: Inserts an object of type value_type constructed with
960
961
  //! std::forward<Args>(args)... in the container if and only if there is
961
962
  //! no element in the container with key equivalent to the key of x.
962
963
  //! p is a hint pointing to where the insert should start to search.
@@ -1332,7 +1333,7 @@ class flat_map
1332
1333
  !dtl::is_convertible<K BOOST_MOVE_I iterator>::value && //not convertible to iterator
1333
1334
  !dtl::is_convertible<K BOOST_MOVE_I const_iterator>::value //not convertible to const_iterator
1334
1335
  BOOST_MOVE_I size_type>::type)
1335
- erase(const K& x)
1336
+ erase(BOOST_FWD_REF(K) x)
1336
1337
  { return m_flat_tree.erase_unique(x); }
1337
1338
 
1338
1339
  //! <b>Effects</b>: Erases all the elements in the range [first, last).
@@ -1714,6 +1715,15 @@ class flat_map
1714
1715
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
1715
1716
  };
1716
1717
 
1718
+ //! <b>Effects</b>: Erases all elements that satisfy the predicate pred from the container c.
1719
+ //!
1720
+ //! <b>Complexity</b>: Linear.
1721
+ template <class K, class M, class C, class A, class Pred>
1722
+ inline typename flat_map<K, M, C, A>::size_type erase_if(flat_map<K, M, C, A>& c, Pred pred)
1723
+ {
1724
+ return container_erase_if(c, pred);
1725
+ }
1726
+
1717
1727
  #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
1718
1728
 
1719
1729
  template <typename InputIterator>
@@ -1788,7 +1798,11 @@ template <class Key, class T, class Compare, class AllocatorOrContainer>
1788
1798
  struct has_trivial_destructor_after_move<boost::container::flat_map<Key, T, Compare, AllocatorOrContainer> >
1789
1799
  {
1790
1800
  typedef typename boost::container::flat_map<Key, T, Compare, AllocatorOrContainer>::value_type value_t;
1801
+ #ifdef BOOST_CONTAINER_STD_PAIR_IS_MOVABLE
1802
+ typedef AllocatorOrContainer alloc_or_cont_t;
1803
+ #else
1791
1804
  typedef typename ::boost::container::dtl::container_or_allocator_rebind<AllocatorOrContainer, value_t>::type alloc_or_cont_t;
1805
+ #endif
1792
1806
  typedef ::boost::container::dtl::flat_tree<value_t,::boost::container::dtl::select1st<Key>, Compare, alloc_or_cont_t> tree;
1793
1807
  BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
1794
1808
  };
@@ -2471,7 +2485,7 @@ class flat_multimap
2471
2485
 
2472
2486
  #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
2473
2487
 
2474
- //! <b>Effects</b>: Inserts an object of type T constructed with
2488
+ //! <b>Effects</b>: Inserts an object of type value_type constructed with
2475
2489
  //! std::forward<Args>(args)... and returns the iterator pointing to the
2476
2490
  //! newly inserted element.
2477
2491
  //!
@@ -2484,7 +2498,7 @@ class flat_multimap
2484
2498
  iterator emplace(BOOST_FWD_REF(Args)... args)
2485
2499
  { return dtl::force_copy<iterator>(m_flat_tree.emplace_equal(boost::forward<Args>(args)...)); }
2486
2500
 
2487
- //! <b>Effects</b>: Inserts an object of type T constructed with
2501
+ //! <b>Effects</b>: Inserts an object of type value_type constructed with
2488
2502
  //! std::forward<Args>(args)... in the container.
2489
2503
  //! p is a hint pointing to where the insert should start to search.
2490
2504
  //!
@@ -3067,6 +3081,15 @@ class flat_multimap
3067
3081
  #pragma GCC pop_options
3068
3082
  #endif
3069
3083
 
3084
+ //! <b>Effects</b>: Erases all elements that satisfy the predicate pred from the container c.
3085
+ //!
3086
+ //! <b>Complexity</b>: Linear.
3087
+ template <class K, class M, class C, class A, class Pred>
3088
+ inline typename flat_multimap<K, M, C, A>::size_type erase_if(flat_multimap<K, M, C, A>& c, Pred pred)
3089
+ {
3090
+ return container_erase_if(c, pred);
3091
+ }
3092
+
3070
3093
  #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
3071
3094
 
3072
3095
  template <typename InputIterator>
@@ -3143,7 +3166,11 @@ template <class Key, class T, class Compare, class AllocatorOrContainer>
3143
3166
  struct has_trivial_destructor_after_move< boost::container::flat_multimap<Key, T, Compare, AllocatorOrContainer> >
3144
3167
  {
3145
3168
  typedef typename boost::container::flat_multimap<Key, T, Compare, AllocatorOrContainer>::value_type value_t;
3169
+ #ifdef BOOST_CONTAINER_STD_PAIR_IS_MOVABLE
3170
+ typedef AllocatorOrContainer alloc_or_cont_t;
3171
+ #else
3146
3172
  typedef typename ::boost::container::dtl::container_or_allocator_rebind<AllocatorOrContainer, value_t>::type alloc_or_cont_t;
3173
+ #endif
3147
3174
  typedef ::boost::container::dtl::flat_tree<value_t,::boost::container::dtl::select1st<Key>, Compare, alloc_or_cont_t> tree;
3148
3175
  BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
3149
3176
  };
@@ -28,6 +28,7 @@
28
28
  // container/detail
29
29
  #include <boost/container/detail/flat_tree.hpp>
30
30
  #include <boost/container/detail/mpl.hpp>
31
+ #include <boost/container/detail/algorithm.hpp>
31
32
  // move
32
33
  #include <boost/move/traits.hpp>
33
34
  #include <boost/move/utility_core.hpp>
@@ -1132,6 +1133,15 @@ class flat_set
1132
1133
  { return this->get_sequence_cref(); }
1133
1134
  };
1134
1135
 
1136
+ //! <b>Effects</b>: Erases all elements that satisfy the predicate pred from the container c.
1137
+ //!
1138
+ //! <b>Complexity</b>: Linear.
1139
+ template <class K, class C, class A, class Pred>
1140
+ inline typename flat_set<K, C, A>::size_type erase_if(flat_set<K, C, A>& c, Pred pred)
1141
+ {
1142
+ return container_erase_if(c, pred);
1143
+ }
1144
+
1135
1145
  #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
1136
1146
 
1137
1147
  template <typename InputIterator>
@@ -1863,6 +1873,15 @@ class flat_multiset
1863
1873
  { return this->get_sequence_cref(); }
1864
1874
  };
1865
1875
 
1876
+ //! <b>Effects</b>: Erases all elements that satisfy the predicate pred from the container c.
1877
+ //!
1878
+ //! <b>Complexity</b>: Linear.
1879
+ template <class K, class C, class A, class Pred>
1880
+ inline typename flat_multiset<K, C, A>::size_type erase_if(flat_multiset<K, C, A>& c, Pred pred)
1881
+ {
1882
+ return container_erase_if(c, pred);
1883
+ }
1884
+
1866
1885
  #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
1867
1886
 
1868
1887
  template <typename InputIterator>
@@ -90,7 +90,7 @@ struct intrusive_list_type
90
90
  , dtl::bi::size_type
91
91
  <typename allocator_traits_type::size_type>
92
92
  >::type container_type;
93
- typedef container_type type ;
93
+ typedef container_type type;
94
94
  };
95
95
 
96
96
  } //namespace dtl {
@@ -1487,6 +1487,28 @@ class list
1487
1487
 
1488
1488
  };
1489
1489
 
1490
+ //! <b>Effects</b>: Erases all elements that compare equal to v from the container c.
1491
+ //!
1492
+ //! <b>Complexity</b>: Linear.
1493
+ template <class T, class A, class U>
1494
+ inline typename list<T, A>::size_type erase(list<T, A>& c, const U& v)
1495
+ {
1496
+ typename list<T, A>::size_type old_size = c.size();
1497
+ c.remove_if(equal_to_value<U>(v));
1498
+ return old_size - c.size();
1499
+ }
1500
+
1501
+ //! <b>Effects</b>: Erases all elements that satisfy the predicate pred from the container c.
1502
+ //!
1503
+ //! <b>Complexity</b>: Linear.
1504
+ template <class T, class A, class Pred>
1505
+ inline typename list<T, A>::size_type erase_if(list<T, A>& c, Pred pred)
1506
+ {
1507
+ typename list<T, A>::size_type old_size = c.size();
1508
+ c.remove_if(pred);
1509
+ return old_size - c.size();
1510
+ }
1511
+
1490
1512
  #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
1491
1513
  template <typename InputIterator>
1492
1514
  list(InputIterator, InputIterator) ->
@@ -32,6 +32,7 @@
32
32
  #include <boost/container/detail/value_init.hpp>
33
33
  #include <boost/container/detail/pair.hpp>
34
34
  #include <boost/container/detail/pair_key_mapped_of_value.hpp>
35
+ #include <boost/container/detail/algorithm.hpp>
35
36
 
36
37
  // move
37
38
  #include <boost/move/traits.hpp>
@@ -610,10 +611,11 @@ class map
610
611
  inline std::pair<iterator, bool> insert_or_assign(BOOST_RV_REF(key_type) k, BOOST_FWD_REF(M) obj)
611
612
  { return this->base_t::insert_or_assign(const_iterator(), ::boost::move(k), ::boost::forward<M>(obj)); }
612
613
 
614
+ //! <b>Requires</b>: This overload is available only if key_compare::is_transparent exists.
615
+ //!
613
616
  //! <b>Effects</b>: If a key equivalent to k already exists in the container, assigns forward<M>(obj)
614
617
  //! to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value
615
- //! as if by insert, constructing it from value_type(k, forward<M>(obj)) and the new element
616
- //! to the container as close as possible to the position just before hint.
618
+ //! as if by insert, constructing it from value_type(k, move(obj)).
617
619
  //!
618
620
  //! No iterators or references are invalidated. If the insertion is successful, pointers and references
619
621
  //! to the element obtained while it is held in the node handle are invalidated, and pointers and
@@ -622,6 +624,29 @@ class map
622
624
  //! <b>Returns</b>: The bool component is true if the insertion took place and false if the assignment
623
625
  //! took place. The iterator component is pointing at the element that was inserted or updated.
624
626
  //!
627
+ //! <b>Complexity</b>: Logarithmic in the size of the container.
628
+ template <class K, class M>
629
+
630
+ BOOST_CONTAINER_DOC1ST
631
+ ( std::pair<iterator BOOST_MOVE_I bool>
632
+ , typename dtl::enable_if_transparent< key_compare
633
+ BOOST_MOVE_I K
634
+ BOOST_MOVE_I std::pair<iterator BOOST_MOVE_I bool>
635
+ >::type) //transparent
636
+ insert_or_assign(BOOST_FWD_REF(K) k, BOOST_FWD_REF(M) obj)
637
+ { return this->base_t::insert_or_assign(const_iterator(), ::boost::forward<K>(k), ::boost::forward<M>(obj)); }
638
+
639
+ //! <b>Effects</b>: If a key equivalent to k already exists in the container, assigns forward<M>(obj)
640
+ //! to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value
641
+ //! as if by insert, constructing it from value_type(k, forward<M>(obj)) and the new element
642
+ //! to the container as close as possible to the position just before hint.
643
+ //!
644
+ //! No iterators or references are invalidated. If the insertion is successful, pointers and references
645
+ //! to the element obtained while it is held in the node handle are invalidated, and pointers and
646
+ //! references obtained to that element before it was extracted become valid.
647
+ //!
648
+ //! <b>Returns</b>: The returned iterator points to the map element whose key is equivalent to k.
649
+ //!
625
650
  //! <b>Complexity</b>: Logarithmic in the size of the container in general, but amortized constant if
626
651
  //! the new element is inserted just before hint.
627
652
  template <class M>
@@ -637,8 +662,7 @@ class map
637
662
  //! to the element obtained while it is held in the node handle are invalidated, and pointers and
638
663
  //! references obtained to that element before it was extracted become valid.
639
664
  //!
640
- //! <b>Returns</b>: The bool component is true if the insertion took place and false if the assignment
641
- //! took place. The iterator component is pointing at the element that was inserted or updated.
665
+ //! <b>Returns</b>: The returned iterator points to the map element whose key is equivalent to k.
642
666
  //!
643
667
  //! <b>Complexity</b>: Logarithmic in the size of the container in general, but amortized constant if
644
668
  //! the new element is inserted just before hint.
@@ -646,6 +670,31 @@ class map
646
670
  inline iterator insert_or_assign(const_iterator hint, BOOST_RV_REF(key_type) k, BOOST_FWD_REF(M) obj)
647
671
  { return this->base_t::insert_or_assign(hint, ::boost::move(k), ::boost::forward<M>(obj)).first; }
648
672
 
673
+ //! <b>Requires</b>: This overload is available only if key_compare::is_transparent exists.
674
+ //!
675
+ //! <b>Effects</b>: If a key equivalent to k already exists in the container, assigns forward<M>(obj)
676
+ //! to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value
677
+ //! as if by insert, constructing it from value_type(k, move(obj)) and the new element
678
+ //! to the container as close as possible to the position just before hint.
679
+ //!
680
+ //! No iterators or references are invalidated. If the insertion is successful, pointers and references
681
+ //! to the element obtained while it is held in the node handle are invalidated, and pointers and
682
+ //! references obtained to that element before it was extracted become valid.
683
+ //!
684
+ //! <b>Returns</b>: The returned iterator points to the map element whose key is equivalent to k.
685
+ //!
686
+ //! <b>Complexity</b>: Logarithmic in the size of the container in general, but amortized constant if
687
+ //! the new element is inserted just before hint.
688
+ template <class K, class M>
689
+ BOOST_CONTAINER_DOC1ST
690
+ ( iterator
691
+ , typename dtl::enable_if_transparent< key_compare
692
+ BOOST_MOVE_I K
693
+ BOOST_MOVE_I iterator
694
+ >::type) //transparent
695
+ insert_or_assign(const_iterator hint, BOOST_FWD_REF(K) k, BOOST_FWD_REF(M) obj)
696
+ { return this->base_t::insert_or_assign(hint, ::boost::forward<K>(k), ::boost::forward<M>(obj)).first; }
697
+
649
698
  //! <b>Returns</b>: A reference to the element whose key is equivalent to x.
650
699
  //! Throws: An exception object of type out_of_range if no such element is present.
651
700
  //! <b>Complexity</b>: logarithmic.
@@ -983,7 +1032,7 @@ class map
983
1032
  !dtl::is_convertible<K BOOST_MOVE_I iterator>::value && //not convertible to iterator
984
1033
  !dtl::is_convertible<K BOOST_MOVE_I const_iterator>::value //not convertible to const_iterator
985
1034
  BOOST_MOVE_I size_type>::type)
986
- erase(const K& x)
1035
+ erase(BOOST_FWD_REF(K) x)
987
1036
  { return this->base_t::erase_unique(x); }
988
1037
 
989
1038
  #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
@@ -1318,6 +1367,15 @@ class map
1318
1367
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
1319
1368
  };
1320
1369
 
1370
+ //! <b>Effects</b>: Erases all elements that satisfy the predicate pred from the container c.
1371
+ //!
1372
+ //! <b>Complexity</b>: Linear.
1373
+ template <class K, class M, class C, class A, class O, class Pred>
1374
+ inline typename map<K, M, C, A, O>::size_type erase_if(map<K, M, C, A, O>& c, Pred pred)
1375
+ {
1376
+ return container_erase_if(c, pred);
1377
+ }
1378
+
1321
1379
  #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
1322
1380
 
1323
1381
  template <typename InputIterator>
@@ -2242,6 +2300,15 @@ class multimap
2242
2300
  #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
2243
2301
  };
2244
2302
 
2303
+ //! <b>Effects</b>: Erases all elements that satisfy the predicate pred from the container c.
2304
+ //!
2305
+ //! <b>Complexity</b>: Linear.
2306
+ template <class K, class M, class C, class A, class O, class Pred>
2307
+ inline typename multimap<K, M, C, A, O>::size_type erase_if(multimap<K, M, C, A, O>& c, Pred pred)
2308
+ {
2309
+ return container_erase_if(c, pred);
2310
+ }
2311
+
2245
2312
  #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
2246
2313
 
2247
2314
  template <typename InputIterator>
@@ -22,6 +22,7 @@
22
22
  #include <boost/container/detail/config_begin.hpp>
23
23
  #include <boost/container/detail/workaround.hpp>
24
24
  #include <boost/container/throw_exception.hpp>
25
+ #include <boost/container/detail/operator_new_helpers.hpp>
25
26
  #include <cstddef>
26
27
 
27
28
  //!\file
@@ -152,22 +153,14 @@ class new_allocator
152
153
  //!Throws bad_alloc if there is no enough memory
153
154
  pointer allocate(size_type count)
154
155
  {
155
- const std::size_t max_count = std::size_t(-1)/(2*sizeof(T));
156
- if(BOOST_UNLIKELY(count > max_count))
157
- throw_bad_alloc();
158
- return static_cast<T*>(::operator new(count*sizeof(T)));
156
+ return dtl::operator_new_allocate<T>(count);
159
157
  }
160
158
 
161
159
  //!Deallocates previously allocated memory.
162
160
  //!Never throws
163
161
  void deallocate(pointer ptr, size_type n) BOOST_NOEXCEPT_OR_NOTHROW
164
162
  {
165
- (void)n;
166
- # if __cpp_sized_deallocation
167
- ::operator delete((void*)ptr, n * sizeof(T));
168
- #else
169
- ::operator delete((void*)ptr);
170
- # endif
163
+ return dtl::operator_delete_deallocate<T>(ptr, n);
171
164
  }
172
165
 
173
166
  //!Returns the maximum number of elements that could be allocated.
@@ -124,8 +124,6 @@ struct hash_opt
124
124
 
125
125
  typedef hash_opt<false, false, false, false> hash_assoc_defaults;
126
126
 
127
- #endif //!defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
128
-
129
127
  //!This option setter specifies if nodes also store the hash value
130
128
  //!so that search and rehashing for hash-expensive types is improved.
131
129
  //!This option might degrade performance for easy to hash types (like integers)
@@ -178,6 +176,8 @@ using hash_assoc_options_t = typename boost::container::hash_assoc_options<Optio
178
176
 
179
177
  #endif
180
178
 
179
+ #endif //!defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
180
+
181
181
  ////////////////////////////////////////////////////////////////
182
182
  //
183
183
  //
@@ -212,9 +212,7 @@ struct default_if_zero<0u, DefaultN>
212
212
  BOOST_STATIC_CONSTEXPR std::size_t value = DefaultN;
213
213
  };
214
214
 
215
-
216
-
217
- #endif
215
+ #endif //!defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
218
216
 
219
217
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
220
218
 
@@ -246,7 +244,7 @@ class default_next_capacity;
246
244
 
247
245
  typedef vector_opt<void, void> vector_null_opt;
248
246
 
249
- #else //!defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
247
+ #else
250
248
 
251
249
  //!This growth factor argument specifies that the container should increase its
252
250
  //!capacity a 50% when existing capacity is exhausted.
@@ -262,20 +260,30 @@ struct growth_factor_100{};
262
260
 
263
261
  #endif //!defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
264
262
 
265
- //!This option setter specifies the growth factor strategy of the underlying vector.
263
+ //!This option setter specifies the growth factor strategy of the
264
+ //!underlying vector.
265
+ //!
266
+ //!\tparam GrowthFactor The function object that implements the growth factor
267
+ //!
268
+ //! The GrowthFactor function object must offer the following interface:
269
+ //!
270
+ //!\code
271
+ //!template<class SizeType>
272
+ //!SizeType operator()(SizeType cur_cap, SizeType add_min_cap, SizeType max_cap) const;
273
+ //!\endcode
266
274
  //!
267
- //!\tparam GrowthFactor A function object that has the following signature:<br/><br/>
268
- //!`template<class SizeType>`<br/>
269
- //!`SizeType operator()(SizeType cur_cap, SizeType add_min_cap, SizeType max_cap) const;`.<br/><br/>
270
- //!`cur_cap` is the current capacity, `add_min_cap` is the minimum additional capacity
271
- //!we want to achieve and `max_cap` is the maximum capacity that the allocator or other
272
- //!factors allow. The implementation should return a value between `cur_cap` + `add_min_cap`
273
- //!and `max_cap`. `cur_cap` + `add_min_cap` is guaranteed not to overflow/wraparound,
274
- //! but the implementation should handle wraparound produced by the growth factor.
275
+ //!Where:
276
+ //! * `cur_cap` is the current capacity
277
+ //! * `add_min_cap` is the minimum additional capacity we want to achieve
278
+ //! * `max_cap` is the maximum capacity that the allocator or other factors allow.
279
+ //!
280
+ //!The implementation should return a value between `cur_cap + add_min_cap`
281
+ //!and `max_cap`. The implementation should handle the potential wraparound produced
282
+ //!by the growth factor and always succeed with a correct value.
275
283
  //!
276
284
  //!Predefined growth factors that can be passed as arguments to this option are:
277
- //!\c boost::container::growth_factor_50
278
- //!\c boost::container::growth_factor_60
285
+ //!\c boost::container::growth_factor_50,
286
+ //!\c boost::container::growth_factor_60 and
279
287
  //!\c boost::container::growth_factor_100
280
288
  //!
281
289
  //!If this option is not specified, a default will be used by the container.
@@ -608,21 +616,30 @@ using devector_options_t = typename boost::container::devector_options<Options..
608
616
 
609
617
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
610
618
 
611
- template<std::size_t BlockBytes, std::size_t BlockSize>
619
+ template<std::size_t BlockBytes, std::size_t BlockSize, class StoredSizeType, bool Reservable>
612
620
  struct deque_opt
613
621
  {
614
622
  BOOST_STATIC_CONSTEXPR std::size_t block_bytes = BlockBytes;
615
623
  BOOST_STATIC_CONSTEXPR std::size_t block_size = BlockSize;
616
624
  BOOST_CONTAINER_STATIC_ASSERT_MSG(!(block_bytes && block_size), "block_bytes and block_size can't be specified at the same time");
625
+ BOOST_STATIC_CONSTEXPR bool reservable = Reservable;
626
+
627
+ typedef StoredSizeType stored_size_type;
628
+
629
+ template<class AllocTraits>
630
+ struct get_stored_size_type
631
+ : get_stored_size_type_with_alloctraits<AllocTraits, StoredSizeType>
632
+ {};
617
633
  };
618
634
 
619
- typedef deque_opt<0u, 0u> deque_null_opt;
635
+ typedef deque_opt<0u, 0u, void, false> deque_null_opt;
620
636
 
621
637
  #endif
622
638
 
623
639
  //! Helper metafunction to combine options into a single type to be used
624
640
  //! by \c boost::container::deque.
625
- //! Supported options are: \c boost::container::block_bytes and \c boost::container::block_size
641
+ //! Supported options are: \c boost::container::block_bytes, \c boost::container::block_size,
642
+ //! \c boost::container::stored_size and \c boost::container::reservable
626
643
  #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || defined(BOOST_CONTAINER_VARIADIC_TEMPLATES)
627
644
  template<class ...Options>
628
645
  #else
@@ -639,7 +656,11 @@ struct deque_options
639
656
  Options...
640
657
  #endif
641
658
  >::type packed_options;
642
- typedef deque_opt< packed_options::block_bytes, packed_options::block_size > implementation_defined;
659
+ typedef deque_opt< packed_options::block_bytes
660
+ , packed_options::block_size
661
+ , typename packed_options::stored_size_type
662
+ , packed_options::reservable
663
+ > implementation_defined;
643
664
  /// @endcond
644
665
  typedef implementation_defined type;
645
666
  };
@@ -654,19 +675,29 @@ using deque_options_t = typename boost::container::deque_options<Options...>::ty
654
675
  #endif
655
676
 
656
677
  //!This option specifies the maximum size of a block in bytes: this delimites the number of contiguous elements
657
- //!that will be allocated by deque as min(1u, BlockBytes/sizeof(value_type))
678
+ //!that will be allocated by some containers as min(1u, BlockBytes/sizeof(value_type))
658
679
  //!A value zero represents the default value.
659
680
  //!
660
681
  //!\tparam BlockBytes An unsigned integer value.
661
682
  BOOST_INTRUSIVE_OPTION_CONSTANT(block_bytes, std::size_t, BlockBytes, block_bytes)
662
683
 
663
684
  //!This option specifies the size of a block, delimites the number of contiguous elements
664
- //!that will be allocated by deque as BlockSize.
685
+ //!that will be allocated by some containersas BlockSize.
686
+ //!For some containers (like deque), a power of two value can improve performance.
665
687
  //!A value zero represents the default value.
666
688
  //!
667
689
  //!\tparam BlockBytes An unsigned integer value.
668
690
  BOOST_INTRUSIVE_OPTION_CONSTANT(block_size, std::size_t, BlockSize, block_size)
669
691
 
692
+ //!This option specifies if the container has reserve/capacity-like features
693
+ //!
694
+ //!For some containers (like deque) this option might change the internal representation or
695
+ //!behavior so that memory for elements can be allocated in advance in
696
+ //!order to improve performance.
697
+ //!
698
+ //!\tparam Reservable An boolean value.
699
+ BOOST_INTRUSIVE_OPTION_CONSTANT(reservable, bool, Reservable, reservable)
700
+
670
701
  } //namespace container {
671
702
  } //namespace boost {
672
703
 
@@ -26,9 +26,9 @@ namespace pmr {
26
26
 
27
27
  template <
28
28
  typename T,
29
- typename GrowthPolicy = growth_factor_60
29
+ typename Options = void
30
30
  >
31
- using devector = boost::container::devector<T, GrowthPolicy, polymorphic_allocator<T> >;
31
+ using devector = boost::container::devector<T, polymorphic_allocator<T>, Options >;
32
32
 
33
33
  #endif
34
34
 
@@ -36,12 +36,14 @@ using devector = boost::container::devector<T, GrowthPolicy, polymorphic_allocat
36
36
  //! that uses a polymorphic allocator
37
37
  template <
38
38
  typename T,
39
- typename GrowthPolicy = growth_factor_60
39
+ typename Options = void
40
40
  >
41
41
  struct devector_of
42
42
  {
43
43
  typedef boost::container::devector
44
- < T, GrowthPolicy, polymorphic_allocator<T> > type;
44
+ < T
45
+ , polymorphic_allocator<T>
46
+ , Options > type;
45
47
  };
46
48
 
47
49
  } //namespace pmr {