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
@@ -89,13 +89,13 @@ class set
89
89
  typedef Compare key_compare;
90
90
  typedef key_compare value_compare;
91
91
  typedef typename base_t::allocator_type allocator_type;
92
- typedef ::boost::container::allocator_traits<allocator_type> allocator_traits_type;
93
- typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
94
- typedef typename ::boost::container::allocator_traits<allocator_type>::const_pointer const_pointer;
95
- typedef typename ::boost::container::allocator_traits<allocator_type>::reference reference;
96
- typedef typename ::boost::container::allocator_traits<allocator_type>::const_reference const_reference;
97
- typedef typename ::boost::container::allocator_traits<allocator_type>::size_type size_type;
98
- typedef typename ::boost::container::allocator_traits<allocator_type>::difference_type difference_type;
92
+ typedef boost::container::allocator_traits<allocator_type> allocator_traits_type;
93
+ typedef typename boost::container::allocator_traits<allocator_type>::pointer pointer;
94
+ typedef typename boost::container::allocator_traits<allocator_type>::const_pointer const_pointer;
95
+ typedef typename boost::container::allocator_traits<allocator_type>::reference reference;
96
+ typedef typename boost::container::allocator_traits<allocator_type>::const_reference const_reference;
97
+ typedef typename boost::container::allocator_traits<allocator_type>::size_type size_type;
98
+ typedef typename boost::container::allocator_traits<allocator_type>::difference_type difference_type;
99
99
  typedef typename BOOST_CONTAINER_IMPDEF(base_t::stored_allocator_type) stored_allocator_type;
100
100
  typedef typename BOOST_CONTAINER_IMPDEF(base_t::iterator) iterator;
101
101
  typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_iterator) const_iterator;
@@ -343,7 +343,7 @@ class set
343
343
  //! <b>Effects</b>: Copy constructs a set using the specified allocator.
344
344
  //!
345
345
  //! <b>Complexity</b>: Linear in x.size().
346
- inline set(const set& x, const allocator_type &a)
346
+ inline set(const set& x, const BOOST_CONTAINER_DOC1ST(allocator_type, typename dtl::type_identity<allocator_type>::type) &a)
347
347
  : base_t(static_cast<const base_t&>(x), a)
348
348
  {}
349
349
 
@@ -351,7 +351,7 @@ class set
351
351
  //! Constructs *this using x's resources.
352
352
  //!
353
353
  //! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise.
354
- inline set(BOOST_RV_REF(set) x, const allocator_type &a)
354
+ inline set(BOOST_RV_REF(set) x, const BOOST_CONTAINER_DOC1ST(allocator_type, typename dtl::type_identity<allocator_type>::type) &a)
355
355
  : base_t(BOOST_MOVE_BASE(base_t, x), a)
356
356
  {}
357
357
 
@@ -574,7 +574,7 @@ class set
574
574
 
575
575
  #endif // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
576
576
 
577
- #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
577
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
578
578
  //! <b>Effects</b>: Inserts x if and only if there is no element in the container
579
579
  //! with key equivalent to the key of x.
580
580
  //!
@@ -583,7 +583,8 @@ class set
583
583
  //! points to the element with key equivalent to the key of x.
584
584
  //!
585
585
  //! <b>Complexity</b>: Logarithmic.
586
- std::pair<iterator, bool> insert(const value_type &x);
586
+ std::pair<iterator, bool> insert(const value_type &x)
587
+ { return this->base_t::insert_unique_convertible(x); }
587
588
 
588
589
  //! <b>Effects</b>: Move constructs a new value from x if and only if there is
589
590
  //! no element in the container with key equivalent to the key of x.
@@ -593,16 +594,32 @@ class set
593
594
  //! points to the element with key equivalent to the key of x.
594
595
  //!
595
596
  //! <b>Complexity</b>: Logarithmic.
596
- std::pair<iterator, bool> insert(value_type &&x);
597
- #else
598
- private:
599
- typedef std::pair<iterator, bool> insert_return_pair;
600
- public:
601
- BOOST_MOVE_CONVERSION_AWARE_CATCH
602
- (insert, value_type, insert_return_pair, this->base_t::insert_unique_convertible)
603
- #endif
597
+ std::pair<iterator, bool> insert(value_type &&x)
598
+ { return this->base_t::insert_unique_convertible(boost::move(x)); }
599
+
600
+ //! <b>Requires</b>: This overload is available only if
601
+ //! key_compare::is_transparent exists.
602
+ //!
603
+ //! <b>Effects</b>: Forward constructs a new value from x if and only if there is
604
+ //! no element in the container with key equivalent to the key of x.
605
+ //!
606
+ //! <b>Returns</b>: The bool component of the returned pair is true if and only
607
+ //! if the insertion takes place, and the iterator component of the pair
608
+ //! points to the element with key equivalent to the key of x.
609
+ //!
610
+ //! <b>Complexity</b>: Logarithmic.
611
+ template <class K>
612
+ inline BOOST_CONTAINER_DOC1ST
613
+ (std::pair<iterator BOOST_MOVE_I bool>
614
+ , typename dtl::enable_if_c<
615
+ dtl::is_transparent<key_compare>::value && //transparent
616
+ !dtl::is_convertible<K BOOST_MOVE_I iterator>::value && //not convertible to iterator
617
+ !dtl::is_convertible<K BOOST_MOVE_I const_iterator>::value //not convertible to const_iterator
618
+ BOOST_MOVE_I std::pair<iterator BOOST_MOVE_I bool>
619
+ >::type)
620
+ insert(K &&x)
621
+ { return this->base_t::insert_unique_convertible(boost::forward<K>(x)); }
604
622
 
605
- #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
606
623
  //! <b>Effects</b>: Inserts a copy of x in the container if and only if there is
607
624
  //! no element in the container with key equivalent to the key of x.
608
625
  //! p is a hint pointing to where the insert should start to search.
@@ -612,7 +629,8 @@ class set
612
629
  //!
613
630
  //! <b>Complexity</b>: Logarithmic in general, but amortized constant if t
614
631
  //! is inserted right before p.
615
- iterator insert(const_iterator p, const value_type &x);
632
+ iterator insert(const_iterator p, const value_type &x)
633
+ { return this->base_t::insert_unique_hint_convertible(p, x); }
616
634
 
617
635
  //! <b>Effects</b>: Inserts an element move constructed from x in the container.
618
636
  //! p is a hint pointing to where the insert should start to search.
@@ -620,8 +638,40 @@ class set
620
638
  //! <b>Returns</b>: An iterator pointing to the element with key equivalent to the key of x.
621
639
  //!
622
640
  //! <b>Complexity</b>: Logarithmic.
623
- iterator insert(const_iterator p, value_type &&x);
641
+ iterator insert(const_iterator p, value_type &&x)
642
+ { return this->base_t::insert_unique_hint_convertible(p, boost::move(x)); }
643
+
644
+ //! <b>Requires</b>: This overload is available only if
645
+ //! key_compare::is_transparent exists.
646
+ //!
647
+ //! <b>Requires</b>: This overload is available only if
648
+ //! key_compare::is_transparent exists.
649
+ //!
650
+ //! <b>Effects</b>: Inserts an element forward constructed from x in the container.
651
+ //! p is a hint pointing to where the insert should start to search.
652
+ //!
653
+ //! <b>Returns</b>: An iterator pointing to the element with key equivalent to the key of x.
654
+ //!
655
+ //! <b>Complexity</b>: Logarithmic.
656
+ template <class K>
657
+ inline BOOST_CONTAINER_DOC1ST
658
+ ( iterator
659
+ , typename dtl::enable_if_c<
660
+ dtl::is_transparent<key_compare>::value && //transparent
661
+ !dtl::is_convertible<K BOOST_MOVE_I iterator>::value && //not convertible to iterator
662
+ !dtl::is_convertible<K BOOST_MOVE_I const_iterator>::value //not convertible to const_iterator
663
+ BOOST_MOVE_I iterator
664
+ >::type)
665
+ insert(const_iterator p, K &&x)
666
+ { return this->base_t::insert_unique_hint_convertible(p, boost::forward<K>(x)); }
667
+
624
668
  #else
669
+ private:
670
+ typedef std::pair<iterator, bool> insert_return_pair;
671
+ public:
672
+ BOOST_MOVE_CONVERSION_AWARE_CATCH
673
+ (insert, value_type, insert_return_pair, this->base_t::insert_unique_convertible)
674
+
625
675
  BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG
626
676
  (insert, value_type, iterator, this->base_t::insert_unique_hint_convertible, const_iterator, const_iterator)
627
677
  #endif
@@ -681,9 +731,9 @@ class set
681
731
  inline void merge(BOOST_RV_REF_BEG multiset<Key, C2, Allocator, Options> BOOST_RV_REF_END source)
682
732
  { return this->merge(static_cast<multiset<Key, C2, Allocator, Options>&>(source)); }
683
733
 
684
- //! <b>Effects</b>: If present, erases the element in the container with key equivalent to x.
734
+ //! <b>Effects</b>: If present, erases the elements in the container with key equivalent to x.
685
735
  //!
686
- //! <b>Returns</b>: Returns the number of erased elements (0/1).
736
+ //! <b>Returns</b>: Returns the number of erased elements.
687
737
  //!
688
738
  //! <b>Complexity</b>: log(size()) + count(k)
689
739
  inline size_type erase(const key_type& x)
@@ -707,12 +757,25 @@ class set
707
757
  //! <b>Complexity</b>: log(size())+N where N is the distance from first to last.
708
758
  iterator erase(const_iterator first, const_iterator last);
709
759
 
760
+ //! <b>Requires</b>: This overload is available only if
761
+ //! key_compare::is_transparent exists.
762
+ //!
763
+ //! <b>Effects</b>: If present, erases the element in the container with key equivalent to x.
764
+ //!
765
+ //! <b>Returns</b>: Returns the number of erased elements.
766
+ template<class K>
767
+ size_type erase(K && k);
768
+
710
769
  //! @copydoc ::boost::container::map::extract(const_iterator)
711
770
  node_type extract(const_iterator p);
712
771
 
713
772
  //! @copydoc ::boost::container::map::extract(const key_type&)
714
773
  node_type extract(const key_type& x);
715
774
 
775
+ //! @copydoc ::boost::container::map::extract(K&&)
776
+ template <class K>
777
+ node_type extract(BOOST_FWD_REF(K) x);
778
+
716
779
  //! <b>Effects</b>: Swaps the contents of *this and x.
717
780
  //!
718
781
  //! <b>Throws</b>: Nothing.
@@ -780,7 +843,7 @@ class set
780
843
  //! <b>Returns</b>: The number of elements with key equivalent to x.
781
844
  //!
782
845
  //! <b>Complexity</b>: log(size())+count(k)
783
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
846
+ BOOST_CONTAINER_NODISCARD inline
784
847
  size_type count(const key_type& x) const
785
848
  { return static_cast<size_type>(this->base_t::find(x) != this->base_t::cend()); }
786
849
 
@@ -791,7 +854,7 @@ class set
791
854
  //!
792
855
  //! <b>Complexity</b>: log(size())+count(k)
793
856
  template<typename K>
794
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
857
+ BOOST_CONTAINER_NODISCARD inline
795
858
  size_type count(const K& x) const
796
859
  { return static_cast<size_type>(this->find(x) != this->cend()); }
797
860
 
@@ -969,10 +1032,17 @@ inline typename set<K, C, A, O>::size_type erase_if(set<K, C, A, O>& c, Pred pre
969
1032
 
970
1033
  #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
971
1034
 
1035
+ //! <b>Deduction guide</b>: allows a `set` to be constructed from the iterator range
1036
+ //! <code>[first, last)</code>, deducing the key type from the value type of
1037
+ //! `InputIterator` and using the default comparator and allocator.
972
1038
  template <typename InputIterator>
973
1039
  set(InputIterator, InputIterator) ->
974
1040
  set< it_based_value_type_t<InputIterator> >;
975
1041
 
1042
+ //! <b>Deduction guide</b>: allows a `set` to be constructed from the iterator range
1043
+ //! <code>[first, last)</code>, deducing the key type from `InputIterator`. The
1044
+ //! trailing argument is used as the allocator if it is an allocator type, otherwise
1045
+ //! it is used as the comparator.
976
1046
  template < typename InputIterator, typename AllocatorOrCompare>
977
1047
  set(InputIterator, InputIterator, AllocatorOrCompare const&) ->
978
1048
  set< it_based_value_type_t<InputIterator>
@@ -988,6 +1058,9 @@ template < typename InputIterator, typename AllocatorOrCompare>
988
1058
  >::type
989
1059
  >;
990
1060
 
1061
+ //! <b>Deduction guide</b>: allows a `set` to be constructed from the iterator range
1062
+ //! <code>[first, last)</code>, deducing the key type from `InputIterator` and taking
1063
+ //! the comparator and allocator types from the supplied arguments.
991
1064
  template < typename InputIterator, typename Compare, typename Allocator
992
1065
  , typename = dtl::require_nonallocator_t<Compare>
993
1066
  , typename = dtl::require_allocator_t<Allocator>>
@@ -996,11 +1069,18 @@ set(InputIterator, InputIterator, Compare const&, Allocator const&) ->
996
1069
  , Compare
997
1070
  , Allocator>;
998
1071
 
1072
+ //! <b>Deduction guide</b>: allows a `set` to be constructed from an already ordered,
1073
+ //! unique iterator range <code>[first, last)</code>, deducing the key type from
1074
+ //! `InputIterator` and using the default comparator and allocator.
999
1075
  template <typename InputIterator>
1000
1076
  set(ordered_unique_range_t, InputIterator, InputIterator) ->
1001
1077
  set< it_based_value_type_t<InputIterator>>;
1002
1078
 
1003
1079
 
1080
+ //! <b>Deduction guide</b>: allows a `set` to be constructed from an already ordered,
1081
+ //! unique iterator range <code>[first, last)</code>, deducing the key type from
1082
+ //! `InputIterator`. The trailing argument is used as the allocator if it is an
1083
+ //! allocator type, otherwise it is used as the comparator.
1004
1084
  template < typename InputIterator, typename AllocatorOrCompare>
1005
1085
  set(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
1006
1086
  set< it_based_value_type_t<InputIterator>
@@ -1016,6 +1096,10 @@ template < typename InputIterator, typename AllocatorOrCompare>
1016
1096
  >::type
1017
1097
  >;
1018
1098
 
1099
+ //! <b>Deduction guide</b>: allows a `set` to be constructed from an already ordered,
1100
+ //! unique iterator range <code>[first, last)</code>, deducing the key type from
1101
+ //! `InputIterator` and taking the comparator and allocator types from the supplied
1102
+ //! arguments.
1019
1103
  template < typename InputIterator, typename Compare, typename Allocator
1020
1104
  , typename = dtl::require_nonallocator_t<Compare>
1021
1105
  , typename = dtl::require_allocator_t<Allocator>>
@@ -1086,13 +1170,13 @@ class multiset
1086
1170
  typedef Compare key_compare;
1087
1171
  typedef key_compare value_compare;
1088
1172
  typedef typename base_t::allocator_type allocator_type;
1089
- typedef ::boost::container::allocator_traits<allocator_type> allocator_traits_type;
1090
- typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
1091
- typedef typename ::boost::container::allocator_traits<allocator_type>::const_pointer const_pointer;
1092
- typedef typename ::boost::container::allocator_traits<allocator_type>::reference reference;
1093
- typedef typename ::boost::container::allocator_traits<allocator_type>::const_reference const_reference;
1094
- typedef typename ::boost::container::allocator_traits<allocator_type>::size_type size_type;
1095
- typedef typename ::boost::container::allocator_traits<allocator_type>::difference_type difference_type;
1173
+ typedef boost::container::allocator_traits<allocator_type> allocator_traits_type;
1174
+ typedef typename boost::container::allocator_traits<allocator_type>::pointer pointer;
1175
+ typedef typename boost::container::allocator_traits<allocator_type>::const_pointer const_pointer;
1176
+ typedef typename boost::container::allocator_traits<allocator_type>::reference reference;
1177
+ typedef typename boost::container::allocator_traits<allocator_type>::const_reference const_reference;
1178
+ typedef typename boost::container::allocator_traits<allocator_type>::size_type size_type;
1179
+ typedef typename boost::container::allocator_traits<allocator_type>::difference_type difference_type;
1096
1180
  typedef typename BOOST_CONTAINER_IMPDEF(base_t::stored_allocator_type) stored_allocator_type;
1097
1181
  typedef typename BOOST_CONTAINER_IMPDEF(base_t::iterator) iterator;
1098
1182
  typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_iterator) const_iterator;
@@ -1257,12 +1341,12 @@ class multiset
1257
1341
  {}
1258
1342
 
1259
1343
  //! @copydoc ::boost::container::set::set(const set &, const allocator_type &)
1260
- inline multiset(const multiset& x, const allocator_type &a)
1344
+ inline multiset(const multiset& x, const BOOST_CONTAINER_DOC1ST(allocator_type, typename dtl::type_identity<allocator_type>::type) &a)
1261
1345
  : base_t(static_cast<const base_t&>(x), a)
1262
1346
  {}
1263
1347
 
1264
1348
  //! @copydoc ::boost::container::set::set(set &&, const allocator_type &)
1265
- inline multiset(BOOST_RV_REF(multiset) x, const allocator_type &a)
1349
+ inline multiset(BOOST_RV_REF(multiset) x, const BOOST_CONTAINER_DOC1ST(allocator_type, typename dtl::type_identity<allocator_type>::type) &a)
1266
1350
  : base_t(BOOST_MOVE_BASE(base_t, x), a)
1267
1351
  {}
1268
1352
 
@@ -1489,12 +1573,20 @@ class multiset
1489
1573
  //! @copydoc ::boost::container::set::erase(const_iterator,const_iterator)
1490
1574
  iterator erase(const_iterator first, const_iterator last);
1491
1575
 
1576
+ //! @copydoc ::boost::container::set::erase(K&&)
1577
+ template<class K>
1578
+ size_type erase(K && k);
1579
+
1492
1580
  //! @copydoc ::boost::container::multimap::extract(const_iterator)
1493
1581
  node_type extract(const_iterator p);
1494
1582
 
1495
1583
  //! @copydoc ::boost::container::multimap::extract(const key_type&)
1496
1584
  node_type extract(const key_type& x);
1497
1585
 
1586
+ //! @copydoc ::boost::container::multimap::extract(K&&)
1587
+ template <class K>
1588
+ node_type extract(BOOST_FWD_REF(K) x);
1589
+
1498
1590
  //! @copydoc ::boost::container::set::swap
1499
1591
  void swap(multiset& x)
1500
1592
  BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value
@@ -1633,11 +1725,18 @@ inline typename multiset<K, C, A, O>::size_type erase_if(multiset<K, C, A, O>& c
1633
1725
 
1634
1726
  #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
1635
1727
 
1728
+ //! <b>Deduction guide</b>: allows a `multiset` to be constructed from the iterator
1729
+ //! range <code>[first, last)</code>, deducing the key type from the value type of
1730
+ //! `InputIterator` and using the default comparator and allocator.
1636
1731
  template <typename InputIterator>
1637
1732
  multiset(InputIterator, InputIterator) ->
1638
1733
  multiset< it_based_value_type_t<InputIterator> >;
1639
1734
 
1640
1735
 
1736
+ //! <b>Deduction guide</b>: allows a `multiset` to be constructed from the iterator
1737
+ //! range <code>[first, last)</code>, deducing the key type from `InputIterator`. The
1738
+ //! trailing argument is used as the allocator if it is an allocator type, otherwise
1739
+ //! it is used as the comparator.
1641
1740
  template < typename InputIterator, typename AllocatorOrCompare>
1642
1741
  multiset(InputIterator, InputIterator, AllocatorOrCompare const&) ->
1643
1742
  multiset < it_based_value_type_t<InputIterator>
@@ -1653,6 +1752,9 @@ multiset(InputIterator, InputIterator, AllocatorOrCompare const&) ->
1653
1752
  >::type
1654
1753
  >;
1655
1754
 
1755
+ //! <b>Deduction guide</b>: allows a `multiset` to be constructed from the iterator
1756
+ //! range <code>[first, last)</code>, deducing the key type from `InputIterator` and
1757
+ //! taking the comparator and allocator types from the supplied arguments.
1656
1758
  template < typename InputIterator, typename Compare, typename Allocator
1657
1759
  , typename = dtl::require_nonallocator_t<Compare>
1658
1760
  , typename = dtl::require_allocator_t<Allocator>>
@@ -1661,10 +1763,17 @@ multiset(InputIterator, InputIterator, Compare const&, Allocator const&) ->
1661
1763
  , Compare
1662
1764
  , Allocator>;
1663
1765
 
1766
+ //! <b>Deduction guide</b>: allows a `multiset` to be constructed from an already
1767
+ //! ordered iterator range <code>[first, last)</code>, deducing the key type from
1768
+ //! `InputIterator` and using the default comparator and allocator.
1664
1769
  template <typename InputIterator>
1665
1770
  multiset(ordered_range_t, InputIterator, InputIterator) ->
1666
1771
  multiset< it_based_value_type_t<InputIterator>>;
1667
1772
 
1773
+ //! <b>Deduction guide</b>: allows a `multiset` to be constructed from an already
1774
+ //! ordered iterator range <code>[first, last)</code>, deducing the key type from
1775
+ //! `InputIterator`. The trailing argument is used as the allocator if it is an
1776
+ //! allocator type, otherwise it is used as the comparator.
1668
1777
  template < typename InputIterator, typename AllocatorOrCompare>
1669
1778
  multiset(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
1670
1779
  multiset < it_based_value_type_t<InputIterator>
@@ -1680,6 +1789,10 @@ multiset(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const
1680
1789
  >::type
1681
1790
  >;
1682
1791
 
1792
+ //! <b>Deduction guide</b>: allows a `multiset` to be constructed from an already
1793
+ //! ordered iterator range <code>[first, last)</code>, deducing the key type from
1794
+ //! `InputIterator` and taking the comparator and allocator types from the supplied
1795
+ //! arguments.
1683
1796
  template < typename InputIterator, typename Compare, typename Allocator
1684
1797
  , typename = dtl::require_nonallocator_t<Compare>
1685
1798
  , typename = dtl::require_allocator_t<Allocator>>