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
@@ -32,182 +32,237 @@
32
32
  #include <boost/container/detail/variadic_templates_tools.hpp>
33
33
  #endif
34
34
  #include <boost/move/utility_core.hpp>
35
+ #include <boost/container/detail/is_constructible.hpp>
35
36
 
36
37
  namespace boost { namespace container {
37
38
 
38
39
  namespace dtl {
39
40
 
41
+ /////////////////////////////////////////////////////////////////////////
42
+ //
43
+ // is_constructible_with_allocator_prefix
44
+ // is_constructible_with_allocator_suffix
45
+ //
46
+ /////////////////////////////////////////////////////////////////////////
40
47
 
41
48
  // Check if we can detect is_convertible using advanced SFINAE expressions
42
- #if !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
43
-
44
- //! Code inspired by Mathias Gaunard's is_convertible.cpp found in the Boost mailing list
45
- //! http://boost.2283326.n4.nabble.com/type-traits-is-constructible-when-decltype-is-supported-td3575452.html
46
- //! Thanks Mathias!
47
-
48
- //With variadic templates, we need a single class to implement the trait
49
- template<class T, class ...Args>
50
- struct is_constructible
51
- {
52
- typedef char yes_type;
53
- struct no_type
54
- { char padding[2]; };
55
-
56
- template<std::size_t N>
57
- struct dummy;
58
-
59
- template<class X>
60
- static decltype(X(boost::move_detail::declval<Args>()...), true_type()) test(int);
61
-
62
- template<class X>
63
- static no_type test(...);
64
-
65
- BOOST_STATIC_CONSTEXPR bool value = sizeof(test<T>(0)) == sizeof(yes_type);
66
- };
67
-
68
- template <class T, class InnerAlloc, class ...Args>
69
- struct is_constructible_with_allocator_prefix
70
- : is_constructible<T, allocator_arg_t, InnerAlloc, Args...>
71
- {};
72
-
73
- #else // #if !defined(BOOST_NO_SFINAE_EXPR) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
74
-
75
- //Without advanced SFINAE expressions, we can't use is_constructible
76
- //so backup to constructible_with_allocator_xxx
77
-
78
- #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
49
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
79
50
 
80
51
  template <class T, class InnerAlloc, class ...Args>
81
52
  struct is_constructible_with_allocator_prefix
82
- : constructible_with_allocator_prefix<T>
53
+ : boost::container::is_constructible<T, allocator_arg_t, InnerAlloc, Args...>
83
54
  {};
84
55
 
85
56
  template <class T, class InnerAlloc, class ...Args>
86
57
  struct is_constructible_with_allocator_suffix
87
- : constructible_with_allocator_suffix<T>
58
+ : boost::container::is_constructible<T, Args..., InnerAlloc>
88
59
  {};
89
60
 
90
- #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
61
+ #else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
91
62
 
92
- template <class T, class InnerAlloc, BOOST_MOVE_CLASSDFLT9>
93
- struct is_constructible_with_allocator_prefix
94
- : constructible_with_allocator_prefix<T>
95
- {};
63
+ template<class T, class InnerAlloc, BOOST_MOVE_CLASSDFLT9, class = void>
64
+ struct is_constructible_with_allocator_prefix;
96
65
 
97
- template <class T, class InnerAlloc, BOOST_MOVE_CLASSDFLT9>
98
- struct is_constructible_with_allocator_suffix
99
- : constructible_with_allocator_suffix<T>
100
- {};
66
+ template<class T, class InnerAlloc, BOOST_MOVE_CLASSDFLT9, class = void>
67
+ struct is_constructible_with_allocator_suffix;
101
68
 
102
- #endif // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
69
+ #define BOOST_INTRUSIVE_IS_CONSTRUCTIBLE_WITH_ALLOCATOR(N) \
70
+ template <typename T, class InnerAlloc BOOST_MOVE_I##N BOOST_MOVE_CLASS##N>\
71
+ struct is_constructible_with_allocator_prefix\
72
+ <T, InnerAlloc BOOST_MOVE_I##N BOOST_MOVE_TARG##N>\
73
+ : boost::container::is_constructible<T, allocator_arg_t, InnerAlloc BOOST_MOVE_I##N BOOST_MOVE_TARG##N>\
74
+ {};\
75
+ \
76
+ template <typename T, class InnerAlloc BOOST_MOVE_I##N BOOST_MOVE_CLASS##N>\
77
+ struct is_constructible_with_allocator_suffix\
78
+ <T, InnerAlloc BOOST_MOVE_I##N BOOST_MOVE_TARG##N>\
79
+ : boost::container::is_constructible<T BOOST_MOVE_I##N BOOST_MOVE_TARG##N, InnerAlloc>\
80
+ {};\
81
+ //
82
+ BOOST_MOVE_ITERATE_0TO8(BOOST_INTRUSIVE_IS_CONSTRUCTIBLE_WITH_ALLOCATOR)
83
+ #undef BOOST_INTRUSIVE_IS_CONSTRUCTIBLE_WITH_ALLOCATOR
103
84
 
104
- #endif // #if !defined(BOOST_NO_SFINAE_EXPR)
85
+ #endif //if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
105
86
 
106
87
  #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
107
88
 
89
+ /////////////////////////////////////////////////////////////////////////
90
+ //
91
+ // dispatch_uses_allocator (NOT pair, NO uses-allocator)
92
+ //
93
+ /////////////////////////////////////////////////////////////////////////
108
94
  template < typename ConstructAlloc
109
- , typename ArgAlloc
95
+ , typename AllocArg
110
96
  , typename T
111
97
  , class ...Args
112
98
  >
113
99
  inline typename dtl::enable_if_and
114
100
  < void
115
101
  , dtl::is_not_pair<T>
116
- , dtl::not_< uses_allocator<T, typename remove_cvref<ArgAlloc>::type > >
102
+ , dtl::not_< uses_allocator<T, typename remove_cvref<AllocArg>::type > >
117
103
  >::type dispatch_uses_allocator
118
- ( ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, T* p, BOOST_FWD_REF(Args)...args)
104
+ ( ConstructAlloc & construct_alloc, BOOST_FWD_REF(AllocArg), T* p, BOOST_FWD_REF(Args)...args)
119
105
  {
120
- (void)arg_alloc;
121
106
  allocator_traits<ConstructAlloc>::construct(construct_alloc, p, ::boost::forward<Args>(args)...);
122
107
  }
123
108
 
124
- // allocator_arg_t
109
+ /////////////////////////////////////////////////////////////////////////
110
+ //
111
+ // dispatch_uses_allocator (NOT pair, uses-allocator, prefix)
112
+ //
113
+ /////////////////////////////////////////////////////////////////////////
125
114
  template < typename ConstructAlloc
126
- , typename ArgAlloc
115
+ , typename AllocArg
127
116
  , typename T
128
117
  , class ...Args
129
118
  >
130
119
  inline typename dtl::enable_if_and
131
120
  < void
132
121
  , dtl::is_not_pair<T>
133
- , uses_allocator<T, typename remove_cvref<ArgAlloc>::type>
134
- , is_constructible_with_allocator_prefix<T, ArgAlloc, Args...>
122
+ , uses_allocator<T, typename remove_cvref<AllocArg>::type>
123
+ , is_constructible_with_allocator_prefix<T, AllocArg, Args...>
135
124
  >::type dispatch_uses_allocator
136
- ( ConstructAlloc& construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, T* p, BOOST_FWD_REF(Args) ...args)
125
+ ( ConstructAlloc& construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, T* p, BOOST_FWD_REF(Args) ...args)
137
126
  {
138
127
  allocator_traits<ConstructAlloc>::construct
139
128
  ( construct_alloc, p, allocator_arg
140
- , ::boost::forward<ArgAlloc>(arg_alloc), ::boost::forward<Args>(args)...);
129
+ , ::boost::forward<AllocArg>(arg_alloc), ::boost::forward<Args>(args)...);
141
130
  }
142
131
 
143
- // allocator suffix
132
+ /////////////////////////////////////////////////////////////////////////
133
+ //
134
+ // dispatch_uses_allocator (NOT pair, uses-allocator, suffix)
135
+ //
136
+ /////////////////////////////////////////////////////////////////////////
144
137
  template < typename ConstructAlloc
145
- , typename ArgAlloc
138
+ , typename AllocArg
146
139
  , typename T
147
140
  , class ...Args
148
141
  >
149
142
  inline typename dtl::enable_if_and
150
143
  < void
151
144
  , dtl::is_not_pair<T>
152
- , uses_allocator<T, typename remove_cvref<ArgAlloc>::type>
153
- , dtl::not_<is_constructible_with_allocator_prefix<T, ArgAlloc, Args...> >
145
+ , uses_allocator<T, typename remove_cvref<AllocArg>::type>
146
+ , dtl::not_<is_constructible_with_allocator_prefix<T, AllocArg, Args...> >
147
+ , is_constructible_with_allocator_suffix<T, AllocArg, Args...>
154
148
  >::type dispatch_uses_allocator
155
- ( ConstructAlloc& construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, T* p, BOOST_FWD_REF(Args)...args)
149
+ ( ConstructAlloc& construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, T* p, BOOST_FWD_REF(Args)...args)
156
150
  {
157
151
  allocator_traits<ConstructAlloc>::construct
158
- (construct_alloc, p, ::boost::forward<Args>(args)..., ::boost::forward<ArgAlloc>(arg_alloc));
152
+ ( construct_alloc, p, ::boost::forward<Args>(args)...
153
+ , ::boost::forward<AllocArg>(arg_alloc));
154
+ }
155
+
156
+ /////////////////////////////////////////////////////////////////////////
157
+ //
158
+ // dispatch_uses_allocator (NOT pair, uses-allocator no viable constructor)
159
+ //
160
+ /////////////////////////////////////////////////////////////////////////
161
+ template < typename ConstructAlloc
162
+ , typename AllocArg
163
+ , typename T
164
+ , class ...Args
165
+ >
166
+ inline typename dtl::enable_if_and
167
+ < void
168
+ , dtl::is_not_pair<T>
169
+ , uses_allocator<T, typename remove_cvref<AllocArg>::type>
170
+ , dtl::not_<is_constructible_with_allocator_prefix<T, AllocArg, Args...> >
171
+ , dtl::not_<is_constructible_with_allocator_suffix<T, AllocArg, Args...> >
172
+ >::type dispatch_uses_allocator
173
+ ( ConstructAlloc& construct_alloc, BOOST_FWD_REF(AllocArg), T* p, BOOST_FWD_REF(Args)...args)
174
+ {
175
+ allocator_traits<ConstructAlloc>::construct(construct_alloc, p, ::boost::forward<Args>(args)...);
159
176
  }
160
177
 
161
178
  #else //#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
162
179
 
180
+ /////////////////////////////////////////////////////////////////////////
181
+ //
182
+ // dispatch_uses_allocator (NOT pair, NO uses-allocator)
183
+ //
184
+ /////////////////////////////////////////////////////////////////////////
163
185
  #define BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE(N) \
164
- template <typename ConstructAlloc, typename ArgAlloc, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
186
+ template <typename ConstructAlloc, typename AllocArg, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
165
187
  inline typename dtl::enable_if_and\
166
188
  < void\
167
189
  , dtl::is_not_pair<T>\
168
- , dtl::not_<uses_allocator<T, typename remove_cvref<ArgAlloc>::type> >\
190
+ , dtl::not_<uses_allocator<T, typename remove_cvref<AllocArg>::type> >\
169
191
  >::type\
170
192
  dispatch_uses_allocator\
171
- (ConstructAlloc &construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, T* p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
193
+ (ConstructAlloc &construct_alloc, BOOST_FWD_REF(AllocArg), T* p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
172
194
  {\
173
- (void)arg_alloc;\
174
195
  allocator_traits<ConstructAlloc>::construct(construct_alloc, p BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
175
196
  }\
176
197
  //
177
198
  BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE)
178
199
  #undef BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE
179
200
 
201
+ /////////////////////////////////////////////////////////////////////////
202
+ //
203
+ // dispatch_uses_allocator (NOT pair, uses-allocator, prefix)
204
+ //
205
+ /////////////////////////////////////////////////////////////////////////
180
206
  #define BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE(N) \
181
- template < typename ConstructAlloc, typename ArgAlloc, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
207
+ template < typename ConstructAlloc, typename AllocArg, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
182
208
  inline typename dtl::enable_if_and\
183
209
  < void\
184
210
  , dtl::is_not_pair<T>\
185
- , uses_allocator<T, typename remove_cvref<ArgAlloc>::type>\
186
- , is_constructible_with_allocator_prefix<T, ArgAlloc BOOST_MOVE_I##N BOOST_MOVE_TARG##N>\
211
+ , uses_allocator<T, typename remove_cvref<AllocArg>::type>\
212
+ , is_constructible_with_allocator_prefix<T, AllocArg BOOST_MOVE_I##N BOOST_MOVE_TARG##N>\
187
213
  >::type\
188
214
  dispatch_uses_allocator\
189
- (ConstructAlloc& construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, T* p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
215
+ (ConstructAlloc& construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, T* p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
190
216
  {\
191
217
  allocator_traits<ConstructAlloc>::construct\
192
- (construct_alloc, p, allocator_arg, ::boost::forward<ArgAlloc>(arg_alloc) BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
218
+ (construct_alloc, p, allocator_arg, ::boost::forward<AllocArg>(arg_alloc) BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
193
219
  }\
194
220
  //
195
221
  BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE)
196
222
  #undef BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE
197
223
 
224
+ /////////////////////////////////////////////////////////////////////////
225
+ //
226
+ // dispatch_uses_allocator (NOT pair, uses-allocator, suffix)
227
+ //
228
+ /////////////////////////////////////////////////////////////////////////
198
229
  #define BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE(N) \
199
- template < typename ConstructAlloc, typename ArgAlloc, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
230
+ template < typename ConstructAlloc, typename AllocArg, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
200
231
  inline typename dtl::enable_if_and\
201
232
  < void\
202
233
  , dtl::is_not_pair<T>\
203
- , uses_allocator<T, typename remove_cvref<ArgAlloc>::type>\
204
- , dtl::not_<is_constructible_with_allocator_prefix<T, ArgAlloc BOOST_MOVE_I##N BOOST_MOVE_TARG##N> >\
234
+ , uses_allocator<T, typename remove_cvref<AllocArg>::type>\
235
+ , dtl::not_<is_constructible_with_allocator_prefix<T, AllocArg BOOST_MOVE_I##N BOOST_MOVE_TARG##N> >\
236
+ , is_constructible_with_allocator_suffix<T, AllocArg BOOST_MOVE_I##N BOOST_MOVE_TARG##N>\
205
237
  >::type\
206
238
  dispatch_uses_allocator\
207
- (ConstructAlloc& construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, T* p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
239
+ (ConstructAlloc& construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, T* p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
208
240
  {\
209
241
  allocator_traits<ConstructAlloc>::construct\
210
- (construct_alloc, p BOOST_MOVE_I##N BOOST_MOVE_FWD##N, ::boost::forward<ArgAlloc>(arg_alloc));\
242
+ (construct_alloc, p BOOST_MOVE_I##N BOOST_MOVE_FWD##N, ::boost::forward<AllocArg>(arg_alloc));\
243
+ }\
244
+ //
245
+ BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE)
246
+ #undef BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE
247
+
248
+ /////////////////////////////////////////////////////////////////////////
249
+ //
250
+ // dispatch_uses_allocator (NOT pair, uses-allocator no viable constructor)
251
+ //
252
+ /////////////////////////////////////////////////////////////////////////
253
+ #define BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE(N) \
254
+ template < typename ConstructAlloc, typename AllocArg, typename T BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
255
+ inline typename dtl::enable_if_and\
256
+ < void\
257
+ , dtl::is_not_pair<T>\
258
+ , uses_allocator<T, typename remove_cvref<AllocArg>::type>\
259
+ , dtl::not_<is_constructible_with_allocator_prefix<T, AllocArg BOOST_MOVE_I##N BOOST_MOVE_TARG##N> >\
260
+ , dtl::not_<is_constructible_with_allocator_suffix<T, AllocArg BOOST_MOVE_I##N BOOST_MOVE_TARG##N> >\
261
+ >::type\
262
+ dispatch_uses_allocator\
263
+ (ConstructAlloc& construct_alloc, BOOST_FWD_REF(AllocArg), T* p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
264
+ {\
265
+ allocator_traits<ConstructAlloc>::construct(construct_alloc, p BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
211
266
  }\
212
267
  //
213
268
  BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR_CODE)
@@ -216,13 +271,13 @@ BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_SCOPED_ALLOCATOR_DISPATCH_USES_ALLOCATOR
216
271
  #endif //#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
217
272
 
218
273
  template < typename ConstructAlloc
219
- , typename ArgAlloc
274
+ , typename AllocArg
220
275
  , typename Pair
221
276
  > inline
222
277
  BOOST_CONTAINER_DOC1ST(void, typename dtl::enable_if<dtl::is_pair<Pair> BOOST_MOVE_I void >::type)
223
278
  dispatch_uses_allocator
224
279
  ( ConstructAlloc & construct_alloc
225
- , BOOST_FWD_REF(ArgAlloc) arg_alloc
280
+ , BOOST_FWD_REF(AllocArg) arg_alloc
226
281
  , Pair* p)
227
282
  {
228
283
  dispatch_uses_allocator(construct_alloc, arg_alloc, dtl::addressof(p->first));
@@ -238,12 +293,12 @@ BOOST_CONTAINER_DOC1ST(void, typename dtl::enable_if<dtl::is_pair<Pair> BOOST_MO
238
293
 
239
294
 
240
295
  template < typename ConstructAlloc
241
- , typename ArgAlloc
296
+ , typename AllocArg
242
297
  , class Pair, class U, class V>
243
298
  BOOST_CONTAINER_DOC1ST(void, typename dtl::enable_if<dtl::is_pair<Pair> BOOST_MOVE_I void>::type)
244
299
  dispatch_uses_allocator
245
300
  ( ConstructAlloc & construct_alloc
246
- , BOOST_FWD_REF(ArgAlloc) arg_alloc
301
+ , BOOST_FWD_REF(AllocArg) arg_alloc
247
302
  , Pair* p, BOOST_FWD_REF(U) x, BOOST_FWD_REF(V) y)
248
303
  {
249
304
  dispatch_uses_allocator(construct_alloc, arg_alloc, dtl::addressof(p->first), ::boost::forward<U>(x));
@@ -258,17 +313,17 @@ BOOST_CONTAINER_DOC1ST(void, typename dtl::enable_if<dtl::is_pair<Pair> BOOST_MO
258
313
  }
259
314
 
260
315
  template < typename ConstructAlloc
261
- , typename ArgAlloc
316
+ , typename AllocArg
262
317
  , class Pair, class Pair2>
263
318
  BOOST_CONTAINER_DOC1ST(void, typename dtl::enable_if< dtl::is_pair<Pair> BOOST_MOVE_I void >::type)
264
319
  dispatch_uses_allocator
265
320
  (ConstructAlloc & construct_alloc
266
- , BOOST_FWD_REF(ArgAlloc) arg_alloc
321
+ , BOOST_FWD_REF(AllocArg) arg_alloc
267
322
  , Pair* p, Pair2& x)
268
323
  { dispatch_uses_allocator(construct_alloc, arg_alloc, p, x.first, x.second); }
269
324
 
270
325
  template < typename ConstructAlloc
271
- , typename ArgAlloc
326
+ , typename AllocArg
272
327
  , class Pair, class Pair2>
273
328
  typename dtl::enable_if_and
274
329
  < void
@@ -276,18 +331,18 @@ typename dtl::enable_if_and
276
331
  , dtl::not_<boost::move_detail::is_reference<Pair2> > >::type //This is needed for MSVC10 and ambiguous overloads
277
332
  dispatch_uses_allocator
278
333
  (ConstructAlloc & construct_alloc
279
- , BOOST_FWD_REF(ArgAlloc) arg_alloc
334
+ , BOOST_FWD_REF(AllocArg) arg_alloc
280
335
  , Pair* p, BOOST_RV_REF_BEG Pair2 BOOST_RV_REF_END x)
281
336
  { dispatch_uses_allocator(construct_alloc, arg_alloc, p, ::boost::move(x.first), ::boost::move(x.second)); }
282
337
 
283
338
 
284
339
  //piecewise construction from boost::tuple
285
340
  #define BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BOOST_TUPLE_CODE(N,M)\
286
- template< typename ConstructAlloc, typename ArgAlloc, class Pair \
341
+ template< typename ConstructAlloc, typename AllocArg, class Pair \
287
342
  , template<class, class, class, class, class, class, class, class, class, class> class BoostTuple \
288
343
  BOOST_MOVE_I_IF(BOOST_MOVE_OR(N,M)) BOOST_MOVE_CLASS##N BOOST_MOVE_I_IF(BOOST_MOVE_AND(N,M)) BOOST_MOVE_CLASSQ##M > \
289
344
  typename dtl::enable_if< dtl::is_pair<Pair> BOOST_MOVE_I void>::type\
290
- dispatch_uses_allocator( ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* pair, piecewise_construct_t\
345
+ dispatch_uses_allocator( ConstructAlloc & construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, Pair* pair, piecewise_construct_t\
291
346
  , BoostTuple<BOOST_MOVE_TARG##N BOOST_MOVE_I##N BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,N),::boost::tuples::null_type)> p\
292
347
  , BoostTuple<BOOST_MOVE_TARGQ##M BOOST_MOVE_I##M BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,M),::boost::tuples::null_type)> q)\
293
348
  {\
@@ -311,9 +366,9 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
311
366
  //piecewise construction from Std Tuple
312
367
  #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
313
368
 
314
- template< typename ConstructAlloc, typename ArgAlloc, class Pair
369
+ template< typename ConstructAlloc, typename AllocArg, class Pair
315
370
  , template<class ...> class Tuple, class... Args1, class... Args2, size_t... Indexes1, size_t... Indexes2>
316
- void dispatch_uses_allocator_index( ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* pair
371
+ void dispatch_uses_allocator_index( ConstructAlloc & construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, Pair* pair
317
372
  , Tuple<Args1...>& t1, Tuple<Args2...>& t2, index_tuple<Indexes1...>, index_tuple<Indexes2...>)
318
373
  {
319
374
  (void)t1; (void)t2;
@@ -328,10 +383,10 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
328
383
  BOOST_CONTAINER_CATCH_END
329
384
  }
330
385
 
331
- template< typename ConstructAlloc, typename ArgAlloc, class Pair
386
+ template< typename ConstructAlloc, typename AllocArg, class Pair
332
387
  , template<class ...> class Tuple, class... Args1, class... Args2>
333
388
  typename dtl::enable_if< dtl::is_pair<Pair>, void >::type
334
- dispatch_uses_allocator( ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* pair, piecewise_construct_t
389
+ dispatch_uses_allocator( ConstructAlloc & construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, Pair* pair, piecewise_construct_t
335
390
  , Tuple<Args1...> t1, Tuple<Args2...> t2)
336
391
  {
337
392
  (dispatch_uses_allocator_index)( construct_alloc, arg_alloc, pair, t1, t2
@@ -343,11 +398,11 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
343
398
 
344
399
  //MSVC 2010 tuple implementation
345
400
  #define BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_MSVC2010_TUPLE_CODE(N,M)\
346
- template< typename ConstructAlloc, typename ArgAlloc, class Pair\
401
+ template< typename ConstructAlloc, typename AllocArg, class Pair\
347
402
  , template<class, class, class, class, class, class, class, class, class, class> class StdTuple\
348
403
  BOOST_MOVE_I_IF(BOOST_MOVE_OR(N,M)) BOOST_MOVE_CLASS##N BOOST_MOVE_I_IF(BOOST_MOVE_AND(N,M)) BOOST_MOVE_CLASSQ##M > \
349
404
  typename dtl::enable_if< dtl::is_pair<Pair> BOOST_MOVE_I void>::type\
350
- dispatch_uses_allocator(ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* pair, piecewise_construct_t\
405
+ dispatch_uses_allocator(ConstructAlloc & construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, Pair* pair, piecewise_construct_t\
351
406
  , StdTuple<BOOST_MOVE_TARG##N BOOST_MOVE_I##N BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,N),::std::tr1::_Nil)> p\
352
407
  , StdTuple<BOOST_MOVE_TARGQ##M BOOST_MOVE_I##M BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,M),::std::tr1::_Nil)> q)\
353
408
  {\
@@ -377,12 +432,12 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
377
432
 
378
433
  //MSVC 2012 tuple implementation
379
434
  #define BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_MSVC2012_TUPLE_CODE(N,M)\
380
- template< typename ConstructAlloc, typename ArgAlloc, class Pair\
435
+ template< typename ConstructAlloc, typename AllocArg, class Pair\
381
436
  , template<BOOST_MOVE_REPEAT(_VARIADIC_MAX, class), class, class, class> class StdTuple \
382
437
  BOOST_MOVE_I_IF(BOOST_MOVE_OR(N,M)) BOOST_MOVE_CLASS##N BOOST_MOVE_I_IF(BOOST_MOVE_AND(N,M)) BOOST_MOVE_CLASSQ##M > \
383
438
  typename dtl::enable_if< dtl::is_pair<Pair> BOOST_MOVE_I void>::type\
384
439
  dispatch_uses_allocator\
385
- ( ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* pair, piecewise_construct_t\
440
+ ( ConstructAlloc & construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, Pair* pair, piecewise_construct_t\
386
441
  , StdTuple<BOOST_MOVE_TARG##N BOOST_MOVE_I##N BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(BOOST_MOVE_ADD(_VARIADIC_MAX, 3),N),::std::_Nil) > p\
387
442
  , StdTuple<BOOST_MOVE_TARGQ##M BOOST_MOVE_I##M BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(BOOST_MOVE_ADD(_VARIADIC_MAX, 3),M),::std::_Nil) > q)\
388
443
  {\
@@ -404,16 +459,28 @@ BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_BO
404
459
  #undef BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_MSVC2010_TUPLE_CODE
405
460
  #undef BOOST_DISPATCH_USES_ALLOCATOR_PIECEWISE_CONSTRUCT_MSVC2012_TUPLE_MAX_IT
406
461
 
407
- #endif //!defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
462
+ #endif // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
463
+
464
+ template<class T>
465
+ struct uses_allocator_destroy
466
+ {
467
+ T &t_;
468
+ uses_allocator_destroy(T&t)
469
+ : t_(t)
470
+ {}
471
+
472
+ ~uses_allocator_destroy()
473
+ { t_.~T(); }
474
+ };
408
475
 
409
476
  #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
410
477
 
411
478
  template < typename ConstructAlloc
412
- , typename ArgAlloc
479
+ , typename AllocArg
413
480
  , class Pair, class KeyType, class ... Args>
414
481
  typename dtl::enable_if< dtl::is_pair<Pair>, void >::type
415
482
  dispatch_uses_allocator
416
- (ConstructAlloc & construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* p, try_emplace_t, BOOST_FWD_REF(KeyType) k, BOOST_FWD_REF(Args) ...args)
483
+ (ConstructAlloc & construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, Pair* p, try_emplace_t, BOOST_FWD_REF(KeyType) k, BOOST_FWD_REF(Args) ...args)
417
484
  {
418
485
  dispatch_uses_allocator(construct_alloc, arg_alloc, dtl::addressof(p->first), ::boost::forward<KeyType>(k));
419
486
  BOOST_CONTAINER_TRY{
@@ -426,14 +493,28 @@ typename dtl::enable_if< dtl::is_pair<Pair>, void >::type
426
493
  BOOST_CONTAINER_CATCH_END
427
494
  }
428
495
 
496
+ template <typename T, typename AllocArg, class ...Args>
497
+ inline T construct_dispatch_uses_allocator
498
+ (BOOST_FWD_REF(AllocArg) arg_alloc, BOOST_FWD_REF(Args)...args)
499
+ {
500
+ typename dtl::aligned_storage<sizeof(T), alignment_of<T>::value>::type storage;
501
+ T * const addr = reinterpret_cast<T*>(&storage);
502
+
503
+ boost::container::dtl::allocator_traits_dummy<T> atd;
504
+ (dispatch_uses_allocator)
505
+ (atd, boost::forward<AllocArg>(arg_alloc), addr, boost::forward<Args>(args)...);
506
+ uses_allocator_destroy<T> d(*addr);
507
+ return d.t_;
508
+ }
509
+
429
510
  #else
430
511
 
431
512
  #define BOOST_CONTAINER_DISPATCH_USES_ALLOCATOR_PAIR_TRY_EMPLACE_CODE(N) \
432
- template <typename ConstructAlloc, typename ArgAlloc, class Pair, class KeyType BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
513
+ template <typename ConstructAlloc, typename AllocArg, class Pair, class KeyType BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
433
514
  inline typename dtl::enable_if\
434
515
  < dtl::is_pair<Pair> BOOST_MOVE_I void >::type\
435
516
  dispatch_uses_allocator\
436
- (ConstructAlloc &construct_alloc, BOOST_FWD_REF(ArgAlloc) arg_alloc, Pair* p, try_emplace_t, \
517
+ (ConstructAlloc &construct_alloc, BOOST_FWD_REF(AllocArg) arg_alloc, Pair* p, try_emplace_t, \
437
518
  BOOST_FWD_REF(KeyType) k BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
438
519
  {\
439
520
  dispatch_uses_allocator(construct_alloc, arg_alloc, dtl::addressof(p->first), ::boost::forward<KeyType>(k));\
@@ -450,7 +531,24 @@ typename dtl::enable_if< dtl::is_pair<Pair>, void >::type
450
531
  BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_DISPATCH_USES_ALLOCATOR_PAIR_TRY_EMPLACE_CODE)
451
532
  #undef BOOST_CONTAINER_DISPATCH_USES_ALLOCATOR_PAIR_TRY_EMPLACE_CODE
452
533
 
453
- #endif //!defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
534
+ #define BOOST_CONTAINER_CONSTRUCT_DISPATCH_USES_ALLOCATOR_CODE(N) \
535
+ template <class T, class AllocArg BOOST_MOVE_I##N BOOST_MOVE_CLASS##N >\
536
+ inline T construct_dispatch_uses_allocator\
537
+ (BOOST_FWD_REF(AllocArg) arg_alloc BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
538
+ {\
539
+ typename dtl::aligned_storage<sizeof(T), alignment_of<T>::value>::type storage;\
540
+ T * const addr = reinterpret_cast<T*>(&storage);\
541
+ boost::container::dtl::allocator_traits_dummy<T> atd;\
542
+ (dispatch_uses_allocator)\
543
+ (atd, boost::forward<AllocArg>(arg_alloc), addr BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
544
+ uses_allocator_destroy<T> d(*addr);\
545
+ return d.t_;\
546
+ }\
547
+ //
548
+ BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_CONSTRUCT_DISPATCH_USES_ALLOCATOR_CODE)
549
+ #undef BOOST_CONTAINER_CONSTRUCT_DISPATCH_USES_ALLOCATOR_CODE
550
+
551
+ #endif // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
454
552
 
455
553
  } //namespace dtl
456
554
 
@@ -74,10 +74,11 @@ BOOST_CONTAINER_DECL int dlmalloc_malloc_check();
74
74
 
75
75
  BOOST_CONTAINER_DECL boost_cont_command_ret_t dlmalloc_allocation_command
76
76
  ( allocation_type command
77
- , size_t sizeof_object
78
- , size_t limit_objects
79
- , size_t preferred_objects
80
- , size_t *received_objects
77
+ , size_t sizeof_bytes
78
+ , size_t alignof_bytes
79
+ , size_t limit_bytess
80
+ , size_t preferred_bytess
81
+ , size_t *received_bytess
81
82
  , void *reuse_ptr
82
83
  );
83
84