passenger 6.2.1 → 6.2.2

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 (270) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +37 -15
  3. data/build/cxx_tests.rb +2 -0
  4. data/build/support/cxx_dependency_map.rb +3 -63
  5. data/src/agent/Core/Config.h +1 -1
  6. data/src/agent/Core/Controller/Config.h +1 -1
  7. data/src/agent/Shared/ApiServerUtils.h +1 -1
  8. data/src/agent/Watchdog/Config.h +1 -1
  9. data/src/apache2_module/Hooks.cpp +13 -0
  10. data/src/apache2_module/Utils.h +14 -0
  11. data/src/cxx_supportlib/Constants.h +1 -1
  12. data/src/cxx_supportlib/FileTools/FileManip.cpp +27 -3
  13. data/src/cxx_supportlib/InstanceDirectory.h +30 -3
  14. data/src/cxx_supportlib/ServerKit/Errors.h +1 -1
  15. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +1 -1
  16. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +1 -1
  17. data/src/cxx_supportlib/ServerKit/HttpRequest.h +1 -1
  18. data/src/cxx_supportlib/ServerKit/llerrors.h +3 -3
  19. data/src/cxx_supportlib/ServerKit/llversion.h +1 -1
  20. data/src/cxx_supportlib/{ServerKit/llhttp_api.c → vendor-copy/llhttp/api.c} +30 -23
  21. data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.c +1756 -1645
  22. data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.h +35 -13
  23. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/classification.hpp +19 -0
  24. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +1 -1
  25. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim_all.hpp +0 -2
  26. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +20 -13
  27. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +2 -2
  28. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +4 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +1 -1
  30. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/debug.hpp +4 -0
  31. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  32. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +1 -1
  33. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  34. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +1 -1
  35. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
  36. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +1 -1
  37. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +6 -1
  38. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +10 -1
  39. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +5 -3
  40. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +1 -1
  41. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +5 -0
  42. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +57 -53
  43. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +10 -10
  44. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -2
  45. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +14 -2
  46. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +176 -2287
  47. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +13 -9
  48. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +186 -70
  49. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +2 -2
  50. data/src/cxx_supportlib/vendor-modified/boost/container/detail/aligned_allocation.hpp +149 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +35 -0
  52. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +1 -0
  53. data/src/cxx_supportlib/vendor-modified/boost/container/detail/bit_utilities.hpp +133 -0
  54. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +18 -3
  55. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +5 -0
  56. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +4 -0
  57. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +1 -1
  58. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +20 -10
  59. data/src/cxx_supportlib/vendor-modified/boost/container/detail/deque_impl.hpp +2744 -0
  60. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +202 -104
  61. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dlmalloc.hpp +5 -4
  62. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +161 -85
  63. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_constructible.hpp +180 -0
  64. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +3 -2
  65. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +12 -0
  66. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +16 -0
  67. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +1 -1
  68. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +9 -1
  69. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +18 -14
  70. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +256 -41
  71. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +75 -24
  72. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +1 -56
  73. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +16 -3
  74. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +1 -7
  75. data/src/cxx_supportlib/vendor-modified/boost/container/detail/range_utils.hpp +196 -0
  76. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +33 -1
  77. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +124 -69
  78. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +109 -7
  79. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +168 -162
  80. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/nest.hpp +2978 -0
  81. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/pmr/nest.hpp +45 -0
  82. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_all_of.hpp +43 -0
  83. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_any_of.hpp +42 -0
  84. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy.hpp +229 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_if.hpp +270 -0
  86. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_n.hpp +308 -0
  87. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count.hpp +101 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count_if.hpp +100 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_equal.hpp +268 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill.hpp +101 -0
  91. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill_n.hpp +171 -0
  92. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find.hpp +110 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if.hpp +110 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if_not.hpp +43 -0
  95. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last.hpp +179 -0
  96. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if.hpp +179 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if_not.hpp +43 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_for_each.hpp +92 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate.hpp +90 -0
  100. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate_n.hpp +162 -0
  101. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_partitioned.hpp +46 -0
  102. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted.hpp +49 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted_until.hpp +169 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_iterator_traits.hpp +382 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_merge.hpp +428 -0
  106. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_mismatch.hpp +350 -0
  107. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_none_of.hpp +98 -0
  108. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition.hpp +296 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_copy.hpp +105 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_point.hpp +116 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove.hpp +57 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy.hpp +207 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy_if.hpp +223 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_if.hpp +57 -0
  115. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace.hpp +90 -0
  116. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace_if.hpp +90 -0
  117. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse.hpp +245 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse_copy.hpp +229 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search.hpp +211 -0
  120. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search_n.hpp +476 -0
  121. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_difference.hpp +300 -0
  122. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_intersection.hpp +287 -0
  123. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_symmetric_difference.hpp +306 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_union.hpp +294 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_stable_partition.hpp +153 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_swap_ranges.hpp +92 -0
  127. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_transform.hpp +93 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/wrapped_iterator.hpp +142 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +642 -417
  130. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +141 -30
  131. data/src/cxx_supportlib/vendor-modified/boost/container/hub.hpp +2426 -0
  132. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +65 -57
  133. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +247 -68
  134. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +7 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +39 -33
  136. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +156 -23
  137. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +3 -3
  138. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/hub.hpp +43 -0
  139. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +5 -3
  140. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +4 -0
  143. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/segtor.hpp +45 -0
  144. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +5 -4
  145. data/src/cxx_supportlib/vendor-modified/boost/container/segtor.hpp +905 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +148 -35
  147. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +59 -52
  148. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +632 -5
  149. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +66 -60
  150. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +46 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +612 -317
  152. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +54 -111
  153. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_construction.hpp +100 -0
  154. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +1 -3
  155. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +233 -116
  156. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -1
  157. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +17 -10
  158. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +1 -3
  159. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +16 -0
  160. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/encoder.hpp +114 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +4 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +211 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +59 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +6 -0
  166. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +34 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +0 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +12 -3
  169. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +29 -174
  171. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +18 -2
  172. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +0 -1
  173. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +4 -5
  174. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +20 -11
  175. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +42 -14
  176. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +58 -22
  177. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +3 -1
  178. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +5 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +8 -2
  180. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +9 -0
  181. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +11 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +9 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/config.hpp +22 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +15 -7
  185. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +23 -11
  186. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +11 -1
  187. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +9 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +11 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +10 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +8 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/{detail → lexical_cast/detail}/lcast_precision.hpp +13 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +11 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +10 -2
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +15 -2
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +11 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +48 -46
  198. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +23 -0
  199. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  200. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +12 -4
  201. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +76 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/move/traits.hpp +11 -0
  204. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +58 -37
  205. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +1 -2
  206. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +17 -9
  207. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +1 -2
  208. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +6 -0
  209. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +6 -1
  211. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_common_defs.hpp +188 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +0 -6
  213. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_nonmember_interface.hpp +117 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +108 -83
  216. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +39 -39
  217. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_select_implementation.hpp +37 -0
  218. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +8 -8
  220. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/union_optional.hpp +724 -0
  221. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +93 -220
  222. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +14 -4
  223. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +1 -1
  225. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +1 -1
  226. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +1 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +4 -6
  228. data/src/cxx_supportlib/vendor-modified/boost/system/api_config.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +16 -0
  230. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +13 -13
  231. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +5 -5
  232. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +3 -2
  233. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +3 -2
  234. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +2 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +30 -28
  237. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +6 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +5 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +1 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +16 -16
  241. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +26 -26
  242. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +196 -6
  243. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +191 -6
  244. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map.hpp +196 -5
  245. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set.hpp +192 -5
  246. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +3 -3
  247. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2 -2
  248. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +3 -3
  249. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +52 -16
  250. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/ranges_support.hpp +104 -0
  251. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +1 -14
  252. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unordered_printers.hpp +10 -4
  253. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +121 -3
  254. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +118 -3
  255. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +338 -1
  256. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +121 -3
  257. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +118 -3
  258. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +333 -1
  259. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  260. data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +276 -143
  261. data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +1262 -771
  262. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +1704 -1586
  263. data/src/nginx_module/ContentHandler.c +35 -0
  264. data/src/ruby_supportlib/phusion_passenger/common_library.rb +6 -6
  265. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +25 -2
  266. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +12 -1
  267. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  268. metadata +73 -8
  269. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_utility.hpp +0 -41
  270. /data/src/cxx_supportlib/{ServerKit/llhttp_http.c → vendor-copy/llhttp/http.c} +0 -0
@@ -1,5 +1,6 @@
1
1
  // Copyright (C) 2022-2023 Christian Mazakas
2
- // Copyright (C) 2024-2025 Joaquin M Lopez Munoz
2
+ // Copyright (C) 2024-2026 Joaquin M Lopez Munoz
3
+ // Copyright (C) 2026 Braden Ganetsky
3
4
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
4
5
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6
 
@@ -16,6 +17,7 @@
16
17
  #include <boost/unordered/detail/foa/node_set_handle.hpp>
17
18
  #include <boost/unordered/detail/foa/node_set_types.hpp>
18
19
  #include <boost/unordered/detail/foa/table.hpp>
20
+ #include <boost/unordered/detail/ranges_support.hpp>
19
21
  #include <boost/unordered/detail/serialize_container.hpp>
20
22
  #include <boost/unordered/detail/type_traits.hpp>
21
23
  #include <boost/unordered/unordered_node_set_fwd.hpp>
@@ -112,6 +114,19 @@ namespace boost {
112
114
  {
113
115
  }
114
116
 
117
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
118
+ template<
119
+ detail::convertible_to_from_range_t FromRangeT,
120
+ detail::container_compatible_range<value_type> R
121
+ >
122
+ unordered_node_set(
123
+ FromRangeT&& fr, R&& rg, allocator_type const& a)
124
+ : unordered_node_set(
125
+ fr, std::forward<R>(rg), size_type(0), hasher(), key_equal(), a)
126
+ {
127
+ }
128
+ #endif
129
+
115
130
  explicit unordered_node_set(allocator_type const& a)
116
131
  : unordered_node_set(0, a)
117
132
  {
@@ -140,6 +155,41 @@ namespace boost {
140
155
  {
141
156
  }
142
157
 
158
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
159
+ template<
160
+ detail::convertible_to_from_range_t FromRangeT,
161
+ detail::container_compatible_range<value_type> R
162
+ >
163
+ unordered_node_set(FromRangeT&&, R&& rg, size_type n = 0,
164
+ hasher const& h = hasher(), key_equal const& pred = key_equal(),
165
+ allocator_type const& a = allocator_type())
166
+ : unordered_node_set(n, h, pred, a)
167
+ {
168
+ this->insert_range(std::forward<R>(rg));
169
+ }
170
+
171
+ template<
172
+ detail::convertible_to_from_range_t FromRangeT,
173
+ detail::container_compatible_range<value_type> R
174
+ >
175
+ unordered_node_set(
176
+ FromRangeT&& fr, R&& rg, size_type n, allocator_type const& a)
177
+ : unordered_node_set(
178
+ fr, std::forward<R>(rg), n, hasher(), key_equal(), a)
179
+ {
180
+ }
181
+
182
+ template<
183
+ detail::convertible_to_from_range_t FromRangeT,
184
+ detail::container_compatible_range<value_type> R
185
+ >
186
+ unordered_node_set(FromRangeT&& fr, R&& rg, size_type n,
187
+ hasher const& h, allocator_type const& a)
188
+ : unordered_node_set(fr, std::forward<R>(rg), n, h, key_equal(), a)
189
+ {
190
+ }
191
+ #endif
192
+
143
193
  unordered_node_set(unordered_node_set const& other) : table_(other.table_)
144
194
  {
145
195
  }
@@ -187,9 +237,10 @@ namespace boost {
187
237
  {
188
238
  }
189
239
 
190
- template <bool avoid_explicit_instantiation = true>
240
+ template <typename Key2,
241
+ typename std::enable_if<std::is_same<Key, Key2>::value, int>::type = 0>
191
242
  unordered_node_set(
192
- concurrent_node_set<Key, Hash, KeyEqual, Allocator>&& other)
243
+ concurrent_node_set<Key2, Hash, KeyEqual, Allocator>&& other)
193
244
  : table_(std::move(other.table_))
194
245
  {
195
246
  }
@@ -296,6 +347,16 @@ namespace boost {
296
347
  }
297
348
  }
298
349
 
350
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
351
+ template<detail::container_compatible_range<value_type> R>
352
+ void insert_range(R&& rg)
353
+ {
354
+ auto first = std::ranges::begin(rg);
355
+ auto last = std::ranges::end(rg);
356
+ while (first != last) table_.emplace(*first++);
357
+ }
358
+ #endif
359
+
299
360
  void insert(std::initializer_list<value_type> ilist)
300
361
  {
301
362
  this->insert(ilist.begin(), ilist.end());
@@ -648,6 +709,25 @@ namespace boost {
648
709
  typename std::iterator_traits<InputIterator>::value_type, Hash, Pred,
649
710
  Allocator>;
650
711
 
712
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
713
+ template <
714
+ boost::unordered::detail::convertible_to_from_range_t FromRangeT,
715
+ std::ranges::input_range R,
716
+ class Hash =
717
+ boost::hash<std::ranges::range_value_t<R> >,
718
+ class Pred =
719
+ std::equal_to<std::ranges::range_value_t<R> >,
720
+ class Allocator = std::allocator<std::ranges::range_value_t<R> >,
721
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
722
+ class = std::enable_if_t<detail::is_pred_v<Pred> >,
723
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
724
+ unordered_node_set(FromRangeT&&, R&&,
725
+ std::size_t = boost::unordered::detail::foa::default_bucket_count,
726
+ Hash = Hash(), Pred = Pred(), Allocator = Allocator())
727
+ -> unordered_node_set<std::ranges::range_value_t<R>,
728
+ Hash, Pred, Allocator>;
729
+ #endif
730
+
651
731
  template <class T, class Hash = boost::hash<T>,
652
732
  class Pred = std::equal_to<T>, class Allocator = std::allocator<T>,
653
733
  class = std::enable_if_t<detail::is_hash_v<Hash> >,
@@ -679,6 +759,29 @@ namespace boost {
679
759
  std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
680
760
  Allocator>;
681
761
 
762
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
763
+ template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
764
+ std::ranges::input_range R,
765
+ class Allocator,
766
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
767
+ unordered_node_set(FromRangeT&&, R&&, std::size_t, Allocator)
768
+ -> unordered_node_set<std::ranges::range_value_t<R>,
769
+ boost::hash<std::ranges::range_value_t<R> >,
770
+ std::equal_to<std::ranges::range_value_t<R> >,
771
+ Allocator>;
772
+
773
+ template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
774
+ std::ranges::input_range R,
775
+ class Hash, class Allocator,
776
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
777
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
778
+ unordered_node_set(
779
+ FromRangeT&&, R&&, std::size_t, Hash, Allocator)
780
+ -> unordered_node_set<std::ranges::range_value_t<R>,
781
+ Hash, std::equal_to<std::ranges::range_value_t<R> >,
782
+ Allocator>;
783
+ #endif
784
+
682
785
  template <class T, class Allocator,
683
786
  class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
684
787
  unordered_node_set(std::initializer_list<T>, std::size_t, Allocator)
@@ -700,6 +803,18 @@ namespace boost {
700
803
  std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
701
804
  Allocator>;
702
805
 
806
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
807
+ template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
808
+ std::ranges::input_range R,
809
+ class Allocator,
810
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
811
+ unordered_node_set(FromRangeT&&, R&&, Allocator)
812
+ -> unordered_node_set<std::ranges::range_value_t<R>,
813
+ boost::hash<std::ranges::range_value_t<R> >,
814
+ std::equal_to<std::ranges::range_value_t<R> >,
815
+ Allocator>;
816
+ #endif
817
+
703
818
  template <class T, class Allocator,
704
819
  class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
705
820
  unordered_node_set(std::initializer_list<T>, Allocator)
@@ -1,7 +1,7 @@
1
1
  // Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
2
2
  // Copyright (C) 2005-2011 Daniel James.
3
3
  // Copyright (C) 2022-2023 Christian Mazakas
4
- // Copyright (C) 2024 Joaquin M Lopez Munoz.
4
+ // Copyright (C) 2024-2026 Joaquin M Lopez Munoz.
5
5
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
6
6
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7
7
 
@@ -15,6 +15,7 @@
15
15
  #pragma once
16
16
  #endif
17
17
 
18
+ #include <boost/unordered/detail/ranges_support.hpp>
18
19
  #include <boost/unordered/detail/serialize_fca_container.hpp>
19
20
  #include <boost/unordered/detail/set.hpp>
20
21
  #include <boost/unordered/detail/type_traits.hpp>
@@ -88,6 +89,17 @@ namespace boost {
88
89
  const hasher& = hasher(), const key_equal& = key_equal(),
89
90
  const allocator_type& = allocator_type());
90
91
 
92
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
93
+ template<
94
+ detail::convertible_to_from_range_t FromRangeT,
95
+ detail::container_compatible_range<T> R
96
+ >
97
+ unordered_set(FromRangeT&&, R&&,
98
+ size_type = boost::unordered::detail::default_bucket_count,
99
+ const hasher& = hasher(), const key_equal& = key_equal(),
100
+ const allocator_type& = allocator_type());
101
+ #endif
102
+
91
103
  unordered_set(unordered_set const&);
92
104
 
93
105
  unordered_set(unordered_set&& other)
@@ -122,6 +134,27 @@ namespace boost {
122
134
  unordered_set(
123
135
  InputIt, InputIt, size_type, const hasher&, const allocator_type&);
124
136
 
137
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
138
+ template <
139
+ detail::convertible_to_from_range_t FromRangeT,
140
+ detail::container_compatible_range<T> R
141
+ >
142
+ unordered_set(FromRangeT&&, R&&, const allocator_type&);
143
+
144
+ template <
145
+ detail::convertible_to_from_range_t FromRangeT,
146
+ detail::container_compatible_range<T> R
147
+ >
148
+ unordered_set(FromRangeT&&, R&&, size_type, const allocator_type&);
149
+
150
+ template <
151
+ detail::convertible_to_from_range_t FromRangeT,
152
+ detail::container_compatible_range<T> R
153
+ >
154
+ unordered_set(
155
+ FromRangeT&&, R&&, size_type, const hasher&, const allocator_type&);
156
+ #endif
157
+
125
158
  unordered_set(std::initializer_list<value_type>, const allocator_type&);
126
159
 
127
160
  unordered_set(
@@ -246,6 +279,11 @@ namespace boost {
246
279
 
247
280
  template <class InputIt> void insert(InputIt, InputIt);
248
281
 
282
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
283
+ template <detail::container_compatible_range<T> R>
284
+ void insert_range(R&&);
285
+ #endif
286
+
249
287
  void insert(std::initializer_list<value_type>);
250
288
 
251
289
  // extract
@@ -478,6 +516,25 @@ namespace boost {
478
516
  -> unordered_set<typename std::iterator_traits<InputIterator>::value_type,
479
517
  Hash, Pred, Allocator>;
480
518
 
519
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
520
+ template <
521
+ boost::unordered::detail::convertible_to_from_range_t FromRangeT,
522
+ std::ranges::input_range R,
523
+ class Hash =
524
+ boost::hash<std::ranges::range_value_t<R> >,
525
+ class Pred =
526
+ std::equal_to<std::ranges::range_value_t<R> >,
527
+ class Allocator = std::allocator<std::ranges::range_value_t<R> >,
528
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
529
+ class = std::enable_if_t<detail::is_pred_v<Pred> >,
530
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
531
+ unordered_set(FromRangeT&&, R&&,
532
+ std::size_t = boost::unordered::detail::default_bucket_count,
533
+ Hash = Hash(), Pred = Pred(), Allocator = Allocator())
534
+ -> unordered_set<std::ranges::range_value_t<R>,
535
+ Hash, Pred, Allocator>;
536
+ #endif
537
+
481
538
  template <class T, class Hash = boost::hash<T>,
482
539
  class Pred = std::equal_to<T>, class Allocator = std::allocator<T>,
483
540
  class = std::enable_if_t<detail::is_hash_v<Hash> >,
@@ -507,6 +564,29 @@ namespace boost {
507
564
  std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
508
565
  Allocator>;
509
566
 
567
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
568
+ template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
569
+ std::ranges::input_range R,
570
+ class Allocator,
571
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
572
+ unordered_set(FromRangeT&&, R&&, std::size_t, Allocator)
573
+ -> unordered_set<std::ranges::range_value_t<R>,
574
+ boost::hash<std::ranges::range_value_t<R> >,
575
+ std::equal_to<std::ranges::range_value_t<R> >,
576
+ Allocator>;
577
+
578
+ template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
579
+ std::ranges::input_range R,
580
+ class Hash, class Allocator,
581
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
582
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
583
+ unordered_set(
584
+ FromRangeT&&, R&&, std::size_t, Hash, Allocator)
585
+ -> unordered_set<std::ranges::range_value_t<R>,
586
+ Hash, std::equal_to<std::ranges::range_value_t<R> >,
587
+ Allocator>;
588
+ #endif
589
+
510
590
  template <class T, class Allocator,
511
591
  class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
512
592
  unordered_set(std::initializer_list<T>, std::size_t, Allocator)
@@ -527,6 +607,18 @@ namespace boost {
527
607
  std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
528
608
  Allocator>;
529
609
 
610
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
611
+ template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
612
+ std::ranges::input_range R,
613
+ class Allocator,
614
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
615
+ unordered_set(FromRangeT&&, R&&, Allocator)
616
+ -> unordered_set<std::ranges::range_value_t<R>,
617
+ boost::hash<std::ranges::range_value_t<R> >,
618
+ std::equal_to<std::ranges::range_value_t<R> >,
619
+ Allocator>;
620
+ #endif
621
+
530
622
  template <class T, class Allocator,
531
623
  class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
532
624
  unordered_set(std::initializer_list<T>, Allocator)
@@ -585,6 +677,18 @@ namespace boost {
585
677
  const hasher& = hasher(), const key_equal& = key_equal(),
586
678
  const allocator_type& = allocator_type());
587
679
 
680
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
681
+ template<
682
+ detail::convertible_to_from_range_t FromRangeT,
683
+ detail::container_compatible_range<T> R
684
+ >
685
+ unordered_multiset(FromRangeT&&, R&&,
686
+ size_type = boost::unordered::detail::default_bucket_count,
687
+ const hasher& = hasher(), const key_equal& = key_equal(),
688
+ const allocator_type& = allocator_type());
689
+ #endif
690
+
691
+
588
692
  unordered_multiset(unordered_multiset const&);
589
693
 
590
694
  unordered_multiset(unordered_multiset&& other)
@@ -620,6 +724,27 @@ namespace boost {
620
724
  unordered_multiset(
621
725
  InputIt, InputIt, size_type, const hasher&, const allocator_type&);
622
726
 
727
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
728
+ template <
729
+ detail::convertible_to_from_range_t FromRangeT,
730
+ detail::container_compatible_range<T> R
731
+ >
732
+ unordered_multiset(FromRangeT&&, R&&, const allocator_type&);
733
+
734
+ template <
735
+ detail::convertible_to_from_range_t FromRangeT,
736
+ detail::container_compatible_range<T> R
737
+ >
738
+ unordered_multiset(FromRangeT&&, R&&, size_type, const allocator_type&);
739
+
740
+ template <
741
+ detail::convertible_to_from_range_t FromRangeT,
742
+ detail::container_compatible_range<T> R
743
+ >
744
+ unordered_multiset(
745
+ FromRangeT&&, R&&, size_type, const hasher&, const allocator_type&);
746
+ #endif
747
+
623
748
  unordered_multiset(
624
749
  std::initializer_list<value_type>, const allocator_type&);
625
750
 
@@ -720,6 +845,11 @@ namespace boost {
720
845
 
721
846
  template <class InputIt> void insert(InputIt, InputIt);
722
847
 
848
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
849
+ template <detail::container_compatible_range<T> R>
850
+ void insert_range(R&&);
851
+ #endif
852
+
723
853
  void insert(std::initializer_list<value_type>);
724
854
 
725
855
  // extract
@@ -942,6 +1072,25 @@ namespace boost {
942
1072
  typename std::iterator_traits<InputIterator>::value_type, Hash, Pred,
943
1073
  Allocator>;
944
1074
 
1075
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
1076
+ template <
1077
+ boost::unordered::detail::convertible_to_from_range_t FromRangeT,
1078
+ std::ranges::input_range R,
1079
+ class Hash =
1080
+ boost::hash<std::ranges::range_value_t<R> >,
1081
+ class Pred =
1082
+ std::equal_to<std::ranges::range_value_t<R> >,
1083
+ class Allocator = std::allocator<std::ranges::range_value_t<R> >,
1084
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
1085
+ class = std::enable_if_t<detail::is_pred_v<Pred> >,
1086
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1087
+ unordered_multiset(FromRangeT&&, R&&,
1088
+ std::size_t = boost::unordered::detail::default_bucket_count,
1089
+ Hash = Hash(), Pred = Pred(), Allocator = Allocator())
1090
+ -> unordered_multiset<std::ranges::range_value_t<R>,
1091
+ Hash, Pred, Allocator>;
1092
+ #endif
1093
+
945
1094
  template <class T, class Hash = boost::hash<T>,
946
1095
  class Pred = std::equal_to<T>, class Allocator = std::allocator<T>,
947
1096
  class = std::enable_if_t<detail::is_hash_v<Hash> >,
@@ -973,6 +1122,29 @@ namespace boost {
973
1122
  std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
974
1123
  Allocator>;
975
1124
 
1125
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
1126
+ template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
1127
+ std::ranges::input_range R,
1128
+ class Allocator,
1129
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1130
+ unordered_multiset(FromRangeT&&, R&&, std::size_t, Allocator)
1131
+ -> unordered_multiset<std::ranges::range_value_t<R>,
1132
+ boost::hash<std::ranges::range_value_t<R> >,
1133
+ std::equal_to<std::ranges::range_value_t<R> >,
1134
+ Allocator>;
1135
+
1136
+ template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
1137
+ std::ranges::input_range R,
1138
+ class Hash, class Allocator,
1139
+ class = std::enable_if_t<detail::is_hash_v<Hash> >,
1140
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1141
+ unordered_multiset(
1142
+ FromRangeT&&, R&&, std::size_t, Hash, Allocator)
1143
+ -> unordered_multiset<std::ranges::range_value_t<R>,
1144
+ Hash, std::equal_to<std::ranges::range_value_t<R> >,
1145
+ Allocator>;
1146
+ #endif
1147
+
976
1148
  template <class T, class Allocator,
977
1149
  class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
978
1150
  unordered_multiset(std::initializer_list<T>, std::size_t, Allocator)
@@ -994,6 +1166,18 @@ namespace boost {
994
1166
  std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
995
1167
  Allocator>;
996
1168
 
1169
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
1170
+ template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
1171
+ std::ranges::input_range R,
1172
+ class Allocator,
1173
+ class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
1174
+ unordered_multiset(FromRangeT&&, R&&, Allocator)
1175
+ -> unordered_multiset<std::ranges::range_value_t<R>,
1176
+ boost::hash<std::ranges::range_value_t<R> >,
1177
+ std::equal_to<std::ranges::range_value_t<R> >,
1178
+ Allocator>;
1179
+ #endif
1180
+
997
1181
  template <class T, class Allocator,
998
1182
  class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
999
1183
  unordered_multiset(std::initializer_list<T>, Allocator)
@@ -1023,6 +1207,23 @@ namespace boost {
1023
1207
  this->insert(f, l);
1024
1208
  }
1025
1209
 
1210
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
1211
+ template <class T, class H, class P, class A>
1212
+ template <
1213
+ detail::convertible_to_from_range_t FromRangeT,
1214
+ detail::container_compatible_range<T> R
1215
+ >
1216
+ unordered_set<T, H, P, A>::unordered_set(FromRangeT&&, R&& rg,
1217
+ size_type n, const hasher& hf, const key_equal& eql,
1218
+ const allocator_type& a)
1219
+ : table_(
1220
+ boost::unordered::detail::initial_size(std::forward<R>(rg), n),
1221
+ hf, eql, a)
1222
+ {
1223
+ this->insert_range(std::forward<R>(rg));
1224
+ }
1225
+ #endif
1226
+
1026
1227
  template <class T, class H, class P, class A>
1027
1228
  unordered_set<T, H, P, A>::unordered_set(unordered_set const& other)
1028
1229
  : table_(other.table_,
@@ -1115,6 +1316,51 @@ namespace boost {
1115
1316
  this->insert(f, l);
1116
1317
  }
1117
1318
 
1319
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
1320
+ template <class T, class H, class P, class A>
1321
+ template <
1322
+ detail::convertible_to_from_range_t FromRangeT,
1323
+ detail::container_compatible_range<T> R
1324
+ >
1325
+ unordered_set<T, H, P, A>::unordered_set(
1326
+ FromRangeT&&, R&& rg, const allocator_type& a)
1327
+ : table_(
1328
+ boost::unordered::detail::initial_size(
1329
+ std::forward<R>(rg), detail::default_bucket_count),
1330
+ hasher(), key_equal(), a)
1331
+ {
1332
+ this->insert_range(std::forward<R>(rg));
1333
+ }
1334
+
1335
+ template <class T, class H, class P, class A>
1336
+ template <
1337
+ detail::convertible_to_from_range_t FromRangeT,
1338
+ detail::container_compatible_range<T> R
1339
+ >
1340
+ unordered_set<T, H, P, A>::unordered_set(
1341
+ FromRangeT&&, R&& rg, size_type n, const allocator_type& a)
1342
+ : table_(
1343
+ boost::unordered::detail::initial_size(std::forward<R>(rg), n),
1344
+ hasher(), key_equal(), a)
1345
+ {
1346
+ this->insert_range(std::forward<R>(rg));
1347
+ }
1348
+
1349
+ template <class T, class H, class P, class A>
1350
+ template <
1351
+ detail::convertible_to_from_range_t FromRangeT,
1352
+ detail::container_compatible_range<T> R
1353
+ >
1354
+ unordered_set<T, H, P, A>::unordered_set(FromRangeT&&, R&& rg,
1355
+ size_type n, const hasher& hf, const allocator_type& a)
1356
+ : table_(
1357
+ boost::unordered::detail::initial_size(std::forward<R>(rg), n),
1358
+ hf, key_equal(), a)
1359
+ {
1360
+ this->insert_range(std::forward<R>(rg));
1361
+ }
1362
+ #endif
1363
+
1118
1364
  template <class T, class H, class P, class A>
1119
1365
  unordered_set<T, H, P, A>::unordered_set(
1120
1366
  std::initializer_list<value_type> list, const allocator_type& a)
@@ -1187,6 +1433,20 @@ namespace boost {
1187
1433
  }
1188
1434
  }
1189
1435
 
1436
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
1437
+ template <class T, class H, class P, class A>
1438
+ template <detail::container_compatible_range<T> R>
1439
+ void unordered_set<T, H, P, A>::insert_range(R&& rg)
1440
+ {
1441
+ auto first = std::ranges::begin(rg);
1442
+ auto last = std::ranges::end(rg);
1443
+ if (first != last) {
1444
+ table_.insert_range_unique(
1445
+ table::extractor::extract(*first), first, last);
1446
+ }
1447
+ }
1448
+ #endif
1449
+
1190
1450
  template <class T, class H, class P, class A>
1191
1451
  void unordered_set<T, H, P, A>::insert(
1192
1452
  std::initializer_list<value_type> list)
@@ -1420,6 +1680,23 @@ namespace boost {
1420
1680
  this->insert(f, l);
1421
1681
  }
1422
1682
 
1683
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
1684
+ template <class T, class H, class P, class A>
1685
+ template <
1686
+ detail::convertible_to_from_range_t FromRangeT,
1687
+ detail::container_compatible_range<T> R
1688
+ >
1689
+ unordered_multiset<T, H, P, A>::unordered_multiset(FromRangeT&&, R&& rg,
1690
+ size_type n, const hasher& hf, const key_equal& eql,
1691
+ const allocator_type& a)
1692
+ : table_(
1693
+ boost::unordered::detail::initial_size(std::forward<R>(rg), n),
1694
+ hf, eql, a)
1695
+ {
1696
+ this->insert_range(std::forward<R>(rg));
1697
+ }
1698
+ #endif
1699
+
1423
1700
  template <class T, class H, class P, class A>
1424
1701
  unordered_multiset<T, H, P, A>::unordered_multiset(
1425
1702
  unordered_multiset const& other)
@@ -1513,6 +1790,51 @@ namespace boost {
1513
1790
  this->insert(f, l);
1514
1791
  }
1515
1792
 
1793
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
1794
+ template <class T, class H, class P, class A>
1795
+ template <
1796
+ detail::convertible_to_from_range_t FromRangeT,
1797
+ detail::container_compatible_range<T> R
1798
+ >
1799
+ unordered_multiset<T, H, P, A>::unordered_multiset(
1800
+ FromRangeT&&, R&& rg, const allocator_type& a)
1801
+ : table_(
1802
+ boost::unordered::detail::initial_size(
1803
+ std::forward<R>(rg), detail::default_bucket_count),
1804
+ hasher(), key_equal(), a)
1805
+ {
1806
+ this->insert_range(std::forward<R>(rg));
1807
+ }
1808
+
1809
+ template <class T, class H, class P, class A>
1810
+ template <
1811
+ detail::convertible_to_from_range_t FromRangeT,
1812
+ detail::container_compatible_range<T> R
1813
+ >
1814
+ unordered_multiset<T, H, P, A>::unordered_multiset(
1815
+ FromRangeT&&, R&& rg, size_type n, const allocator_type& a)
1816
+ : table_(
1817
+ boost::unordered::detail::initial_size(std::forward<R>(rg), n),
1818
+ hasher(), key_equal(), a)
1819
+ {
1820
+ this->insert_range(std::forward<R>(rg));
1821
+ }
1822
+
1823
+ template <class T, class H, class P, class A>
1824
+ template <
1825
+ detail::convertible_to_from_range_t FromRangeT,
1826
+ detail::container_compatible_range<T> R
1827
+ >
1828
+ unordered_multiset<T, H, P, A>::unordered_multiset(FromRangeT&&, R&& rg,
1829
+ size_type n, const hasher& hf, const allocator_type& a)
1830
+ : table_(
1831
+ boost::unordered::detail::initial_size(std::forward<R>(rg), n),
1832
+ hf, key_equal(), a)
1833
+ {
1834
+ this->insert_range(std::forward<R>(rg));
1835
+ }
1836
+ #endif
1837
+
1516
1838
  template <class T, class H, class P, class A>
1517
1839
  unordered_multiset<T, H, P, A>::unordered_multiset(
1518
1840
  std::initializer_list<value_type> list, const allocator_type& a)
@@ -1582,6 +1904,16 @@ namespace boost {
1582
1904
  table_.insert_range_equiv(first, last);
1583
1905
  }
1584
1906
 
1907
+ #if !defined(BOOST_UNORDERED_NO_RANGES)
1908
+ template <class T, class H, class P, class A>
1909
+ template <detail::container_compatible_range<T> R>
1910
+ void unordered_multiset<T, H, P, A>::insert_range(R&& rg)
1911
+ {
1912
+ table_.insert_range_equiv(
1913
+ std::ranges::begin(rg), std::ranges::end(rg));
1914
+ }
1915
+ #endif
1916
+
1585
1917
  template <class T, class H, class P, class A>
1586
1918
  void unordered_multiset<T, H, P, A>::insert(
1587
1919
  std::initializer_list<value_type> list)
@@ -19,7 +19,7 @@
19
19
  // BOOST_VERSION / 100 % 1000 is the minor version
20
20
  // BOOST_VERSION / 100000 is the major version
21
21
 
22
- #define BOOST_VERSION 109000
22
+ #define BOOST_VERSION 109200
23
23
 
24
24
  //
25
25
  // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
@@ -27,6 +27,6 @@
27
27
  // number, y is the minor version number, and z is the patch level if not 0.
28
28
  // This is used by <config/auto_link.hpp> to select which library version to link to.
29
29
 
30
- #define BOOST_LIB_VERSION "1_90"
30
+ #define BOOST_LIB_VERSION "1_92"
31
31
 
32
32
  #endif