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
@@ -643,11 +643,11 @@ class flat_tree
643
643
  : m_data(boost::move(x.m_data))
644
644
  { }
645
645
 
646
- inline flat_tree(const flat_tree& x, const allocator_type &a)
646
+ inline flat_tree(const flat_tree& x, const BOOST_CONTAINER_DOC1ST(allocator_type, typename dtl::type_identity<allocator_type>::type) &a)
647
647
  : m_data(x.m_data, a)
648
648
  { }
649
649
 
650
- inline flat_tree(BOOST_RV_REF(flat_tree) x, const allocator_type &a)
650
+ inline flat_tree(BOOST_RV_REF(flat_tree) x, const BOOST_CONTAINER_DOC1ST(allocator_type, typename dtl::type_identity<allocator_type>::type) &a)
651
651
  : m_data(boost::move(x.m_data), a)
652
652
  { }
653
653
 
@@ -772,87 +772,87 @@ class flat_tree
772
772
 
773
773
  public:
774
774
  // accessors:
775
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
775
+ BOOST_CONTAINER_NODISCARD inline
776
776
  Compare key_comp() const
777
777
  { return this->m_data.get_comp(); }
778
778
 
779
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
779
+ BOOST_CONTAINER_NODISCARD inline
780
780
  value_compare value_comp() const
781
781
  { return this->m_data; }
782
782
 
783
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
783
+ BOOST_CONTAINER_NODISCARD inline
784
784
  allocator_type get_allocator() const
785
785
  { return this->m_data.m_seq.get_allocator(); }
786
786
 
787
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
787
+ BOOST_CONTAINER_NODISCARD inline
788
788
  get_stored_allocator_const_return_t get_stored_allocator() const
789
789
  {
790
790
  return flat_tree_get_stored_allocator(this->m_data.m_seq, dtl::bool_<has_stored_allocator_type>());
791
791
  }
792
792
 
793
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
793
+ BOOST_CONTAINER_NODISCARD inline
794
794
  get_stored_allocator_noconst_return_t get_stored_allocator()
795
795
  {
796
796
  return flat_tree_get_stored_allocator(this->m_data.m_seq, dtl::bool_<has_stored_allocator_type>());
797
797
  }
798
798
 
799
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
799
+ BOOST_CONTAINER_NODISCARD inline
800
800
  iterator begin()
801
801
  { return this->m_data.m_seq.begin(); }
802
802
 
803
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
803
+ BOOST_CONTAINER_NODISCARD inline
804
804
  const_iterator begin() const
805
805
  { return this->cbegin(); }
806
806
 
807
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
807
+ BOOST_CONTAINER_NODISCARD inline
808
808
  const_iterator cbegin() const
809
809
  { return this->m_data.m_seq.begin(); }
810
810
 
811
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
811
+ BOOST_CONTAINER_NODISCARD inline
812
812
  iterator end()
813
813
  { return this->m_data.m_seq.end(); }
814
814
 
815
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
815
+ BOOST_CONTAINER_NODISCARD inline
816
816
  const_iterator end() const
817
817
  { return this->cend(); }
818
818
 
819
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
819
+ BOOST_CONTAINER_NODISCARD inline
820
820
  const_iterator cend() const
821
821
  { return this->m_data.m_seq.end(); }
822
822
 
823
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
823
+ BOOST_CONTAINER_NODISCARD inline
824
824
  reverse_iterator rbegin()
825
825
  { return reverse_iterator(this->end()); }
826
826
 
827
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
827
+ BOOST_CONTAINER_NODISCARD inline
828
828
  const_reverse_iterator rbegin() const
829
829
  { return this->crbegin(); }
830
830
 
831
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
831
+ BOOST_CONTAINER_NODISCARD inline
832
832
  const_reverse_iterator crbegin() const
833
833
  { return const_reverse_iterator(this->cend()); }
834
834
 
835
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
835
+ BOOST_CONTAINER_NODISCARD inline
836
836
  reverse_iterator rend()
837
837
  { return reverse_iterator(this->begin()); }
838
838
 
839
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
839
+ BOOST_CONTAINER_NODISCARD inline
840
840
  const_reverse_iterator rend() const
841
841
  { return this->crend(); }
842
842
 
843
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
843
+ BOOST_CONTAINER_NODISCARD inline
844
844
  const_reverse_iterator crend() const
845
845
  { return const_reverse_iterator(this->cbegin()); }
846
846
 
847
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
847
+ BOOST_CONTAINER_NODISCARD inline
848
848
  bool empty() const
849
849
  { return this->m_data.m_seq.empty(); }
850
850
 
851
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
851
+ BOOST_CONTAINER_NODISCARD inline
852
852
  size_type size() const
853
853
  { return this->m_data.m_seq.size(); }
854
854
 
855
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
855
+ BOOST_CONTAINER_NODISCARD inline
856
856
  size_type max_size() const
857
857
  { return this->m_data.m_seq.max_size(); }
858
858
 
@@ -885,6 +885,18 @@ class flat_tree
885
885
  return ret;
886
886
  }
887
887
 
888
+ template<class Convertible>
889
+ std::pair<iterator,bool> insert_unique(BOOST_FWD_REF(Convertible) val)
890
+ {
891
+ std::pair<iterator,bool> ret;
892
+ insert_commit_data data;
893
+ ret.second = this->priv_insert_unique_prepare(KeyOfValue()(val), data);
894
+ ret.first = ret.second ? this->priv_insert_commit(data, boost::move(val))
895
+ : this->begin() + (data.position - this->cbegin());
896
+ //: iterator(vector_iterator_get_ptr(data.position));
897
+ return ret;
898
+ }
899
+
888
900
  iterator insert_equal(const value_type& val)
889
901
  {
890
902
  iterator i = this->upper_bound(KeyOfValue()(val));
@@ -919,6 +931,21 @@ class flat_tree
919
931
  //: iterator(vector_iterator_get_ptr(data.position));
920
932
  }
921
933
 
934
+ template<class K>
935
+ inline typename dtl::enable_if_c<
936
+ !dtl::is_convertible<K, iterator>::value && //not convertible to iterator
937
+ !dtl::is_convertible<K, const_iterator>::value //not convertible to const_iterator
938
+ , iterator>::type
939
+ insert_unique(const_iterator hint, BOOST_FWD_REF(K) val)
940
+ {
941
+ BOOST_ASSERT(this->priv_in_range_or_end(hint));
942
+ insert_commit_data data;
943
+ return this->priv_insert_unique_prepare(hint, KeyOfValue()(val), data)
944
+ ? this->priv_insert_commit(data, boost::move(val))
945
+ : this->begin() + (data.position - this->cbegin());
946
+ //: iterator(vector_iterator_get_ptr(data.position));
947
+ }
948
+
922
949
  iterator insert_equal(const_iterator hint, const value_type& val)
923
950
  {
924
951
  BOOST_ASSERT(this->priv_in_range_or_end(hint));
@@ -936,7 +963,7 @@ class flat_tree
936
963
  }
937
964
 
938
965
  template <class InIt>
939
- void insert_unique(InIt first, InIt last)
966
+ void insert_unique_range(InIt first, InIt last)
940
967
  {
941
968
  dtl::bool_<is_contiguous_container<container_type>::value> contiguous_tag;
942
969
  container_type &seq = this->m_data.m_seq;
@@ -963,7 +990,7 @@ class flat_tree
963
990
  }
964
991
 
965
992
  template <class InIt>
966
- void insert_equal(InIt first, InIt last)
993
+ void insert_equal_range(InIt first, InIt last)
967
994
  {
968
995
  if (first != last) {
969
996
  dtl::bool_<is_contiguous_container<container_type>::value> contiguous_tag;
@@ -977,7 +1004,7 @@ class flat_tree
977
1004
  //Ordered
978
1005
 
979
1006
  template <class InIt>
980
- void insert_equal(ordered_range_t, InIt first, InIt last)
1007
+ void insert_equal_range(ordered_range_t, InIt first, InIt last)
981
1008
  {
982
1009
  const bool value = boost::container::dtl::
983
1010
  has_member_function_callable_with_merge_unique<container_type, InIt, InIt, value_compare>::value;
@@ -985,7 +1012,7 @@ class flat_tree
985
1012
  }
986
1013
 
987
1014
  template <class InIt>
988
- void insert_unique(ordered_unique_range_t, InIt first, InIt last)
1015
+ void insert_unique_range(ordered_unique_range_t, InIt first, InIt last)
989
1016
  {
990
1017
  const bool value = boost::container::dtl::
991
1018
  has_member_function_callable_with_merge_unique<container_type, InIt, InIt, value_compare>::value;
@@ -1040,16 +1067,32 @@ class flat_tree
1040
1067
  return this->insert_equal(hint, ::boost::move(*pval));
1041
1068
  }
1042
1069
 
1070
+ template <class KeyType, class... Args>
1071
+ inline std::pair<iterator, bool> try_emplace
1072
+ (BOOST_FWD_REF(KeyType) key, BOOST_FWD_REF(Args)... args)
1073
+ {
1074
+ std::pair<iterator,bool> ret;
1075
+ insert_commit_data data;
1076
+ const typename remove_cvref<KeyType>::type & k = key; //Support emulated rvalue references
1077
+ ret.second = this->priv_insert_unique_prepare(k, data);
1078
+
1079
+ if(!ret.second){
1080
+ ret.first = this->nth(size_type(data.position - this->cbegin()));
1081
+ }
1082
+ else{
1083
+ ret.first = this->m_data.m_seq.emplace(data.position, try_emplace_t(), ::boost::forward<KeyType>(key), ::boost::forward<Args>(args)...);
1084
+ }
1085
+ return ret;
1086
+ }
1087
+
1043
1088
  template <class KeyType, class... Args>
1044
1089
  inline std::pair<iterator, bool> try_emplace
1045
1090
  (const_iterator hint, BOOST_FWD_REF(KeyType) key, BOOST_FWD_REF(Args)... args)
1046
1091
  {
1047
1092
  std::pair<iterator,bool> ret;
1048
1093
  insert_commit_data data;
1049
- const key_type & k = key;
1050
- ret.second = hint == const_iterator()
1051
- ? this->priv_insert_unique_prepare(k, data)
1052
- : this->priv_insert_unique_prepare(hint, k, data);
1094
+ const typename remove_cvref<KeyType>::type & k = key; //Support emulated rvalue references
1095
+ ret.second = this->priv_insert_unique_prepare(hint, k, data);
1053
1096
 
1054
1097
  if(!ret.second){
1055
1098
  ret.first = this->nth(size_type(data.position - this->cbegin()));
@@ -1107,15 +1150,30 @@ class flat_tree
1107
1150
  return this->insert_equal(hint, ::boost::move(*pval));\
1108
1151
  }\
1109
1152
  template <class KeyType BOOST_MOVE_I##N BOOST_MOVE_CLASS##N>\
1153
+ inline std::pair<iterator, bool>\
1154
+ try_emplace(BOOST_FWD_REF(KeyType) key BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1155
+ {\
1156
+ std::pair<iterator,bool> ret;\
1157
+ insert_commit_data data;\
1158
+ const typename remove_cvref<KeyType>::type & k = key;\
1159
+ ret.second = this->priv_insert_unique_prepare(k, data);\
1160
+ \
1161
+ if(!ret.second){\
1162
+ ret.first = this->nth(size_type(data.position - this->cbegin()));\
1163
+ }\
1164
+ else{\
1165
+ ret.first = this->m_data.m_seq.emplace(data.position, try_emplace_t(), ::boost::forward<KeyType>(key) BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
1166
+ }\
1167
+ return ret;\
1168
+ }\
1169
+ template <class KeyType BOOST_MOVE_I##N BOOST_MOVE_CLASS##N>\
1110
1170
  inline std::pair<iterator, bool>\
1111
1171
  try_emplace(const_iterator hint, BOOST_FWD_REF(KeyType) key BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1112
1172
  {\
1113
1173
  std::pair<iterator,bool> ret;\
1114
1174
  insert_commit_data data;\
1115
- const key_type & k = key;\
1116
- ret.second = hint == const_iterator()\
1117
- ? this->priv_insert_unique_prepare(k, data)\
1118
- : this->priv_insert_unique_prepare(hint, k, data);\
1175
+ const typename remove_cvref<KeyType>::type & k = key;\
1176
+ ret.second = this->priv_insert_unique_prepare(hint, k, data);\
1119
1177
  \
1120
1178
  if(!ret.second){\
1121
1179
  ret.first = this->nth(size_type(data.position - this->cbegin()));\
@@ -1131,15 +1189,30 @@ class flat_tree
1131
1189
 
1132
1190
  #endif // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
1133
1191
 
1192
+ template<class KeyType, class M>
1193
+ std::pair<iterator, bool> insert_or_assign(BOOST_FWD_REF(KeyType) key, BOOST_FWD_REF(M) obj)
1194
+ {
1195
+ const typename remove_cvref<KeyType>::type & k = key; //Support emulated rvalue references
1196
+ std::pair<iterator,bool> ret;
1197
+ insert_commit_data data;
1198
+ ret.second = this->priv_insert_unique_prepare(k, data);
1199
+ if(!ret.second){
1200
+ ret.first = this->nth(size_type(data.position - this->cbegin()));
1201
+ ret.first->second = boost::forward<M>(obj);
1202
+ }
1203
+ else{
1204
+ ret.first = this->m_data.m_seq.emplace(data.position, boost::forward<KeyType>(key), boost::forward<M>(obj));
1205
+ }
1206
+ return ret;
1207
+ }
1208
+
1134
1209
  template<class KeyType, class M>
1135
1210
  std::pair<iterator, bool> insert_or_assign(const_iterator hint, BOOST_FWD_REF(KeyType) key, BOOST_FWD_REF(M) obj)
1136
1211
  {
1137
- const key_type& k = key;
1212
+ const typename remove_cvref<KeyType>::type & k = key; //Support emulated rvalue references
1138
1213
  std::pair<iterator,bool> ret;
1139
1214
  insert_commit_data data;
1140
- ret.second = hint == const_iterator()
1141
- ? this->priv_insert_unique_prepare(k, data)
1142
- : this->priv_insert_unique_prepare(hint, k, data);
1215
+ ret.second = this->priv_insert_unique_prepare(hint, k, data);
1143
1216
  if(!ret.second){
1144
1217
  ret.first = this->nth(size_type(data.position - this->cbegin()));
1145
1218
  ret.first->second = boost::forward<M>(obj);
@@ -1226,7 +1299,7 @@ class flat_tree
1226
1299
  return flat_tree_nth<iterator>(this->m_data.m_seq, n, dtl::bool_<value>());
1227
1300
  }
1228
1301
 
1229
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1302
+ BOOST_CONTAINER_NODISCARD inline
1230
1303
  const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1231
1304
  {
1232
1305
  const bool value = boost::container::dtl::
@@ -1234,7 +1307,7 @@ class flat_tree
1234
1307
  return flat_tree_nth<const_iterator>(this->m_data.m_seq, n, dtl::bool_<value>());
1235
1308
  }
1236
1309
 
1237
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1310
+ BOOST_CONTAINER_NODISCARD inline
1238
1311
  size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
1239
1312
  {
1240
1313
  const bool value = boost::container::dtl::
@@ -1242,7 +1315,7 @@ class flat_tree
1242
1315
  return flat_tree_index_of(this->m_data.m_seq, p, dtl::bool_<value>());
1243
1316
  }
1244
1317
 
1245
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1318
+ BOOST_CONTAINER_NODISCARD inline
1246
1319
  size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
1247
1320
  {
1248
1321
  const bool value = boost::container::dtl::
@@ -1251,7 +1324,7 @@ class flat_tree
1251
1324
  }
1252
1325
 
1253
1326
  // set operations:
1254
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD
1327
+ BOOST_CONTAINER_NODISCARD
1255
1328
  iterator find(const key_type& k)
1256
1329
  {
1257
1330
  iterator i = this->lower_bound(k);
@@ -1262,7 +1335,7 @@ class flat_tree
1262
1335
  return i;
1263
1336
  }
1264
1337
 
1265
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD
1338
+ BOOST_CONTAINER_NODISCARD
1266
1339
  const_iterator find(const key_type& k) const
1267
1340
  {
1268
1341
  const_iterator i = this->lower_bound(k);
@@ -1275,7 +1348,7 @@ class flat_tree
1275
1348
  }
1276
1349
 
1277
1350
  template<class K>
1278
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD
1351
+ BOOST_CONTAINER_NODISCARD
1279
1352
  typename dtl::enable_if_transparent<key_compare, K, iterator>::type
1280
1353
  find(const K& k)
1281
1354
  {
@@ -1288,7 +1361,7 @@ class flat_tree
1288
1361
  }
1289
1362
 
1290
1363
  template<class K>
1291
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD
1364
+ BOOST_CONTAINER_NODISCARD
1292
1365
  typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type
1293
1366
  find(const K& k) const
1294
1367
  {
@@ -1301,7 +1374,7 @@ class flat_tree
1301
1374
  return i;
1302
1375
  }
1303
1376
 
1304
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD
1377
+ BOOST_CONTAINER_NODISCARD
1305
1378
  size_type count(const key_type& k) const
1306
1379
  {
1307
1380
  std::pair<const_iterator, const_iterator> p = this->equal_range(k);
@@ -1310,7 +1383,7 @@ class flat_tree
1310
1383
  }
1311
1384
 
1312
1385
  template<class K>
1313
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD
1386
+ BOOST_CONTAINER_NODISCARD
1314
1387
  typename dtl::enable_if_transparent<key_compare, K, size_type>::type
1315
1388
  count(const K& k) const
1316
1389
  {
@@ -1319,11 +1392,11 @@ class flat_tree
1319
1392
  return n;
1320
1393
  }
1321
1394
 
1322
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline bool contains(const key_type& x) const
1395
+ BOOST_CONTAINER_NODISCARD inline bool contains(const key_type& x) const
1323
1396
  { return this->find(x) != this->cend(); }
1324
1397
 
1325
1398
  template<typename K>
1326
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1399
+ BOOST_CONTAINER_NODISCARD inline
1327
1400
  typename dtl::enable_if_transparent<key_compare, K, bool>::type
1328
1401
  contains(const K& x) const
1329
1402
  { return this->find(x) != this->cend(); }
@@ -1331,15 +1404,15 @@ class flat_tree
1331
1404
  template<class C2>
1332
1405
  inline void merge_unique(flat_tree<Value, KeyOfValue, C2, AllocatorOrContainer>& source)
1333
1406
  {
1334
- this->insert_unique( boost::make_move_iterator(source.begin())
1335
- , boost::make_move_iterator(source.end()));
1407
+ this->insert_unique_range( boost::make_move_iterator(source.begin())
1408
+ , boost::make_move_iterator(source.end()));
1336
1409
  }
1337
1410
 
1338
1411
  template<class C2>
1339
1412
  inline void merge_equal(flat_tree<Value, KeyOfValue, C2, AllocatorOrContainer>& source)
1340
1413
  {
1341
- this->insert_equal( boost::make_move_iterator(source.begin())
1342
- , boost::make_move_iterator(source.end()));
1414
+ this->insert_equal_range( boost::make_move_iterator(source.begin())
1415
+ , boost::make_move_iterator(source.end()));
1343
1416
  }
1344
1417
 
1345
1418
  inline void merge_unique(flat_tree& source)
@@ -1366,88 +1439,88 @@ class flat_tree
1366
1439
  , dtl::bool_<value>());
1367
1440
  }
1368
1441
 
1369
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1442
+ BOOST_CONTAINER_NODISCARD inline
1370
1443
  iterator lower_bound(const key_type& k)
1371
1444
  { return this->priv_lower_bound(this->begin(), this->end(), k); }
1372
1445
 
1373
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1446
+ BOOST_CONTAINER_NODISCARD inline
1374
1447
  const_iterator lower_bound(const key_type& k) const
1375
1448
  { return this->priv_lower_bound(this->cbegin(), this->cend(), k); }
1376
1449
 
1377
1450
  template<class K>
1378
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1451
+ BOOST_CONTAINER_NODISCARD inline
1379
1452
  typename dtl::enable_if_transparent<key_compare, K, iterator>::type
1380
1453
  lower_bound(const K& k)
1381
1454
  { return this->priv_lower_bound(this->begin(), this->end(), k); }
1382
1455
 
1383
1456
  template<class K>
1384
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1457
+ BOOST_CONTAINER_NODISCARD inline
1385
1458
  typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type
1386
1459
  lower_bound(const K& k) const
1387
1460
  { return this->priv_lower_bound(this->cbegin(), this->cend(), k); }
1388
1461
 
1389
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1462
+ BOOST_CONTAINER_NODISCARD inline
1390
1463
  iterator upper_bound(const key_type& k)
1391
1464
  { return this->priv_upper_bound(this->begin(), this->end(), k); }
1392
1465
 
1393
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1466
+ BOOST_CONTAINER_NODISCARD inline
1394
1467
  const_iterator upper_bound(const key_type& k) const
1395
1468
  { return this->priv_upper_bound(this->cbegin(), this->cend(), k); }
1396
1469
 
1397
1470
  template<class K>
1398
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1471
+ BOOST_CONTAINER_NODISCARD inline
1399
1472
  typename dtl::enable_if_transparent<key_compare, K,iterator>::type
1400
1473
  upper_bound(const K& k)
1401
1474
  { return this->priv_upper_bound(this->begin(), this->end(), k); }
1402
1475
 
1403
1476
  template<class K>
1404
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1477
+ BOOST_CONTAINER_NODISCARD inline
1405
1478
  typename dtl::enable_if_transparent<key_compare, K,const_iterator>::type
1406
1479
  upper_bound(const K& k) const
1407
1480
  { return this->priv_upper_bound(this->cbegin(), this->cend(), k); }
1408
1481
 
1409
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1482
+ BOOST_CONTAINER_NODISCARD inline
1410
1483
  std::pair<iterator,iterator> equal_range(const key_type& k)
1411
1484
  { return this->priv_equal_range(this->begin(), this->end(), k); }
1412
1485
 
1413
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1486
+ BOOST_CONTAINER_NODISCARD inline
1414
1487
  std::pair<const_iterator, const_iterator> equal_range(const key_type& k) const
1415
1488
  { return this->priv_equal_range(this->cbegin(), this->cend(), k); }
1416
1489
 
1417
1490
  template<class K>
1418
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1491
+ BOOST_CONTAINER_NODISCARD inline
1419
1492
  typename dtl::enable_if_transparent<key_compare, K, std::pair<iterator,iterator> >::type
1420
1493
  equal_range(const K& k)
1421
1494
  { return this->priv_equal_range(this->begin(), this->end(), k); }
1422
1495
 
1423
1496
  template<class K>
1424
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1497
+ BOOST_CONTAINER_NODISCARD inline
1425
1498
  typename dtl::enable_if_transparent<key_compare, K,std::pair<const_iterator,const_iterator> >::type
1426
1499
  equal_range(const K& k) const
1427
1500
  { return this->priv_equal_range(this->cbegin(), this->cend(), k); }
1428
1501
 
1429
1502
 
1430
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1503
+ BOOST_CONTAINER_NODISCARD inline
1431
1504
  std::pair<iterator, iterator> lower_bound_range(const key_type& k)
1432
1505
  { return this->priv_lower_bound_range(this->begin(), this->end(), k); }
1433
1506
 
1434
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1507
+ BOOST_CONTAINER_NODISCARD inline
1435
1508
  std::pair<const_iterator, const_iterator> lower_bound_range(const key_type& k) const
1436
1509
  { return this->priv_lower_bound_range(this->cbegin(), this->cend(), k); }
1437
1510
 
1438
1511
  template<class K>
1439
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1512
+ BOOST_CONTAINER_NODISCARD inline
1440
1513
  typename dtl::enable_if_transparent<key_compare, K,std::pair<iterator,iterator> >::type
1441
1514
  lower_bound_range(const K& k)
1442
1515
  { return this->priv_lower_bound_range(this->begin(), this->end(), k); }
1443
1516
 
1444
1517
  template<class K>
1445
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1518
+ BOOST_CONTAINER_NODISCARD inline
1446
1519
  typename dtl::enable_if_transparent<key_compare, K,std::pair<const_iterator,const_iterator> >::type
1447
1520
  lower_bound_range(const K& k) const
1448
1521
  { return this->priv_lower_bound_range(this->cbegin(), this->cend(), k); }
1449
1522
 
1450
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1523
+ BOOST_CONTAINER_NODISCARD inline
1451
1524
  size_type capacity() const
1452
1525
  {
1453
1526
  const bool value = boost::container::dtl::
@@ -1463,15 +1536,15 @@ class flat_tree
1463
1536
  (flat_tree_reserve)(this->m_data.m_seq, cnt, dtl::bool_<value>());
1464
1537
  }
1465
1538
 
1466
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1539
+ BOOST_CONTAINER_NODISCARD inline
1467
1540
  container_type extract_sequence()
1468
1541
  { return boost::move(m_data.m_seq); }
1469
1542
 
1470
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1543
+ BOOST_CONTAINER_NODISCARD inline
1471
1544
  container_type &get_sequence_ref()
1472
1545
  { return m_data.m_seq; }
1473
1546
 
1474
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1547
+ BOOST_CONTAINER_NODISCARD inline
1475
1548
  const container_type &get_sequence_cref() const
1476
1549
  { return m_data.m_seq; }
1477
1550
 
@@ -1499,31 +1572,31 @@ class flat_tree
1499
1572
  m_data.m_seq = boost::move(seq);
1500
1573
  }
1501
1574
 
1502
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1575
+ BOOST_CONTAINER_NODISCARD inline
1503
1576
  friend bool operator==(const flat_tree& x, const flat_tree& y)
1504
1577
  {
1505
1578
  return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin());
1506
1579
  }
1507
1580
 
1508
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1581
+ BOOST_CONTAINER_NODISCARD inline
1509
1582
  friend bool operator<(const flat_tree& x, const flat_tree& y)
1510
1583
  {
1511
1584
  return ::boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end());
1512
1585
  }
1513
1586
 
1514
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1587
+ BOOST_CONTAINER_NODISCARD inline
1515
1588
  friend bool operator!=(const flat_tree& x, const flat_tree& y)
1516
1589
  { return !(x == y); }
1517
1590
 
1518
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1591
+ BOOST_CONTAINER_NODISCARD inline
1519
1592
  friend bool operator>(const flat_tree& x, const flat_tree& y)
1520
1593
  { return y < x; }
1521
1594
 
1522
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1595
+ BOOST_CONTAINER_NODISCARD inline
1523
1596
  friend bool operator<=(const flat_tree& x, const flat_tree& y)
1524
1597
  { return !(y < x); }
1525
1598
 
1526
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1599
+ BOOST_CONTAINER_NODISCARD inline
1527
1600
  friend bool operator>=(const flat_tree& x, const flat_tree& y)
1528
1601
  { return !(x < y); }
1529
1602
 
@@ -1541,10 +1614,10 @@ class flat_tree
1541
1614
  //for the constructor
1542
1615
  //Call end() every iteration as reallocation might have invalidated iterators
1543
1616
  if(unique_insertion){
1544
- this->insert_unique(first, last);
1617
+ this->insert_unique_range(first, last);
1545
1618
  }
1546
1619
  else{
1547
- this->insert_equal (first, last);
1620
+ this->insert_equal_range(first, last);
1548
1621
  }
1549
1622
  }
1550
1623
 
@@ -1583,20 +1656,23 @@ class flat_tree
1583
1656
  }
1584
1657
  }
1585
1658
 
1659
+ template<class K>
1586
1660
  bool priv_insert_unique_prepare
1587
- (const_iterator b, const_iterator e, const key_type& k, insert_commit_data &commit_data)
1661
+ (const_iterator b, const_iterator e, const K& k, insert_commit_data &commit_data)
1588
1662
  {
1589
1663
  const key_compare &key_cmp = this->priv_key_comp();
1590
1664
  commit_data.position = this->priv_lower_bound(b, e, k);
1591
1665
  return commit_data.position == e || key_cmp(k, KeyOfValue()(*commit_data.position));
1592
1666
  }
1593
1667
 
1668
+ template<class K>
1594
1669
  inline bool priv_insert_unique_prepare
1595
- (const key_type& k, insert_commit_data &commit_data)
1670
+ (const K& k, insert_commit_data &commit_data)
1596
1671
  { return this->priv_insert_unique_prepare(this->cbegin(), this->cend(), k, commit_data); }
1597
1672
 
1673
+ template<class K>
1598
1674
  bool priv_insert_unique_prepare
1599
- (const_iterator pos, const key_type& k, insert_commit_data &commit_data)
1675
+ (const_iterator pos, const K& k, insert_commit_data &commit_data)
1600
1676
  {
1601
1677
  //N1780. Props to Howard Hinnant!
1602
1678
  //To insert k at pos:
@@ -1642,7 +1718,7 @@ class flat_tree
1642
1718
  inline iterator priv_insert_commit
1643
1719
  (insert_commit_data &commit_data, BOOST_FWD_REF(Convertible) convertible)
1644
1720
  {
1645
- return this->m_data.m_seq.insert
1721
+ return this->m_data.m_seq.emplace
1646
1722
  ( commit_data.position
1647
1723
  , boost::forward<Convertible>(convertible));
1648
1724
  }