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
@@ -69,13 +69,13 @@
69
69
  {};
70
70
 
71
71
  #define BOOST_MOVE_CONVERSION_AWARE_CATCH_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION)\
72
- inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\
72
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\
73
73
  { return FWD_FUNCTION(static_cast<const TYPE&>(x)); }\
74
74
  \
75
- inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
75
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
76
76
  { return FWD_FUNCTION(::boost::move(x)); }\
77
77
  \
78
- inline RETURN_VALUE PUB_FUNCTION(TYPE &x)\
78
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(TYPE &x)\
79
79
  { return FWD_FUNCTION(const_cast<const TYPE &>(x)); }\
80
80
  //
81
81
  #if defined(BOOST_MOVE_HELPERS_RETURN_SFINAE_BROKEN)
@@ -83,12 +83,12 @@
83
83
  BOOST_MOVE_CONVERSION_AWARE_CATCH_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION)\
84
84
  \
85
85
  template<class BOOST_MOVE_TEMPL_PARAM>\
86
- inline RETURN_VALUE PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u,\
86
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u,\
87
87
  typename boost_move_conversion_aware_catch_1< ::boost::move_detail::nat, BOOST_MOVE_TEMPL_PARAM, TYPE>::type* = 0)\
88
88
  { return FWD_FUNCTION(u); }\
89
89
  \
90
90
  template<class BOOST_MOVE_TEMPL_PARAM>\
91
- inline RETURN_VALUE PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u,\
91
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u,\
92
92
  typename boost_move_conversion_aware_catch_2< ::boost::move_detail::nat, BOOST_MOVE_TEMPL_PARAM, TYPE>::type* = 0)\
93
93
  {\
94
94
  TYPE t((u));\
@@ -100,12 +100,12 @@
100
100
  BOOST_MOVE_CONVERSION_AWARE_CATCH_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION)\
101
101
  \
102
102
  template<class BOOST_MOVE_TEMPL_PARAM>\
103
- inline typename boost_move_conversion_aware_catch_1<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, TYPE>::type\
103
+ BOOST_MOVE_FORCEINLINE typename boost_move_conversion_aware_catch_1<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, TYPE>::type\
104
104
  PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u)\
105
105
  { return FWD_FUNCTION(u); }\
106
106
  \
107
107
  template<class BOOST_MOVE_TEMPL_PARAM>\
108
- inline typename boost_move_conversion_aware_catch_2<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, TYPE>::type\
108
+ BOOST_MOVE_FORCEINLINE typename boost_move_conversion_aware_catch_2<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, TYPE>::type\
109
109
  PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u)\
110
110
  {\
111
111
  TYPE t((u));\
@@ -116,14 +116,14 @@
116
116
  #elif (defined(_MSC_VER) && (_MSC_VER == 1600))
117
117
 
118
118
  #define BOOST_MOVE_CONVERSION_AWARE_CATCH(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION)\
119
- inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\
119
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\
120
120
  { return FWD_FUNCTION(static_cast<const TYPE&>(x)); }\
121
121
  \
122
- inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
122
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
123
123
  { return FWD_FUNCTION(::boost::move(x)); }\
124
124
  \
125
125
  template<class BOOST_MOVE_TEMPL_PARAM>\
126
- inline typename ::boost::move_detail::enable_if_c\
126
+ BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_c\
127
127
  < !::boost::move_detail::is_same<TYPE, BOOST_MOVE_TEMPL_PARAM>::value\
128
128
  , RETURN_VALUE >::type\
129
129
  PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u)\
@@ -136,10 +136,10 @@
136
136
  #else //BOOST_NO_CXX11_RVALUE_REFERENCES
137
137
 
138
138
  #define BOOST_MOVE_CONVERSION_AWARE_CATCH(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION)\
139
- inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\
139
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_CONST(TYPE) x)\
140
140
  { return FWD_FUNCTION(x); }\
141
141
  \
142
- inline RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
142
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
143
143
  { return FWD_FUNCTION(::boost::move(x)); }\
144
144
  //
145
145
 
@@ -174,13 +174,13 @@
174
174
  {};
175
175
 
176
176
  #define BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION, ARG1, UNLESS_CONVERTIBLE_TO)\
177
- inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\
177
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\
178
178
  { return FWD_FUNCTION(arg1, static_cast<const TYPE&>(x)); }\
179
179
  \
180
- inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
180
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
181
181
  { return FWD_FUNCTION(arg1, ::boost::move(x)); }\
182
182
  \
183
- inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, TYPE &x)\
183
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, TYPE &x)\
184
184
  { return FWD_FUNCTION(arg1, const_cast<const TYPE &>(x)); }\
185
185
  //
186
186
  #if defined(BOOST_MOVE_HELPERS_RETURN_SFINAE_BROKEN)
@@ -188,12 +188,12 @@
188
188
  BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION, ARG1, UNLESS_CONVERTIBLE_TO)\
189
189
  \
190
190
  template<class BOOST_MOVE_TEMPL_PARAM>\
191
- inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u,\
191
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u,\
192
192
  typename boost_move_conversion_aware_catch_1arg_1<void, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type* = 0)\
193
193
  { return FWD_FUNCTION(arg1, u); }\
194
194
  \
195
195
  template<class BOOST_MOVE_TEMPL_PARAM>\
196
- inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u,\
196
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u,\
197
197
  typename boost_move_conversion_aware_catch_1arg_2<void, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type* = 0)\
198
198
  {\
199
199
  TYPE t((u));\
@@ -205,12 +205,12 @@
205
205
  BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG_COMMON(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION, ARG1, UNLESS_CONVERTIBLE_TO)\
206
206
  \
207
207
  template<class BOOST_MOVE_TEMPL_PARAM>\
208
- inline typename boost_move_conversion_aware_catch_1arg_1<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type\
208
+ BOOST_MOVE_FORCEINLINE typename boost_move_conversion_aware_catch_1arg_1<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type\
209
209
  PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u)\
210
210
  { return FWD_FUNCTION(arg1, u); }\
211
211
  \
212
212
  template<class BOOST_MOVE_TEMPL_PARAM>\
213
- inline typename boost_move_conversion_aware_catch_1arg_2<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type\
213
+ BOOST_MOVE_FORCEINLINE typename boost_move_conversion_aware_catch_1arg_2<RETURN_VALUE, BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO, TYPE>::type\
214
214
  PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u)\
215
215
  {\
216
216
  TYPE t((u));\
@@ -222,14 +222,14 @@
222
222
  #elif (defined(_MSC_VER) && (_MSC_VER == 1600))
223
223
 
224
224
  #define BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION, ARG1, UNLESS_CONVERTIBLE_TO)\
225
- inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\
225
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\
226
226
  { return FWD_FUNCTION(arg1, static_cast<const TYPE&>(x)); }\
227
227
  \
228
- inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
228
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
229
229
  { return FWD_FUNCTION(arg1, ::boost::move(x)); }\
230
230
  \
231
231
  template<class BOOST_MOVE_TEMPL_PARAM>\
232
- inline typename ::boost::move_detail::disable_if_or\
232
+ BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::disable_if_or\
233
233
  < RETURN_VALUE \
234
234
  , ::boost::move_detail::is_same<TYPE, BOOST_MOVE_TEMPL_PARAM> \
235
235
  , ::boost::move_detail::is_same_or_convertible<BOOST_MOVE_TEMPL_PARAM, UNLESS_CONVERTIBLE_TO> \
@@ -244,10 +244,10 @@
244
244
  #else
245
245
 
246
246
  #define BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(PUB_FUNCTION, TYPE, RETURN_VALUE, FWD_FUNCTION, ARG1, UNLESS_CONVERTIBLE_TO)\
247
- inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\
247
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_CONST(TYPE) x)\
248
248
  { return FWD_FUNCTION(arg1, static_cast<const TYPE&>(x)); }\
249
249
  \
250
- inline RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
250
+ BOOST_MOVE_FORCEINLINE RETURN_VALUE PUB_FUNCTION(ARG1 arg1, BOOST_MOVE_CATCH_RVALUE(TYPE) x) \
251
251
  { return FWD_FUNCTION(arg1, ::boost::move(x)); }\
252
252
  //
253
253
 
@@ -115,7 +115,7 @@ struct QPFHolder
115
115
  template<int Dummy>
116
116
  const double QPFHolder<Dummy>::nanosecs_per_tic = get_nsec_per_tic();
117
117
 
118
- inline boost::uint64_t nsec_clock() BOOST_NOEXCEPT
118
+ BOOST_MOVE_FORCEINLINE boost::uint64_t nsec_clock() BOOST_NOEXCEPT
119
119
  {
120
120
  double nanosecs_per_tic = QPFHolder<0>::nanosecs_per_tic;
121
121
 
@@ -132,7 +132,9 @@ inline boost::uint64_t nsec_clock() BOOST_NOEXCEPT
132
132
 
133
133
  #include <mach/mach_time.h> // mach_absolute_time, mach_timebase_info_data_t
134
134
 
135
- inline boost::uint64_t nsec_clock() BOOST_NOEXCEPT
135
+ namespace boost { namespace move_detail {
136
+
137
+ BOOST_MOVE_FORCEINLINE boost::uint64_t nsec_clock() BOOST_NOEXCEPT
136
138
  {
137
139
  boost::uint64_t count = ::mach_absolute_time();
138
140
 
@@ -142,6 +144,8 @@ inline boost::uint64_t nsec_clock() BOOST_NOEXCEPT
142
144
  ( static_cast<double>(count)*(static_cast<double>(info.numer) / info.denom) );
143
145
  }
144
146
 
147
+ }} //namespace boost { namespace move_detail {
148
+
145
149
  #elif defined(BOOST_MOVE_DETAIL_POSIX_API)
146
150
 
147
151
  #include <time.h>
@@ -158,7 +162,9 @@ inline boost::uint64_t nsec_clock() BOOST_NOEXCEPT
158
162
  # error "No high resolution steady clock in your system, please provide a patch"
159
163
  # endif
160
164
 
161
- inline boost::uint64_t nsec_clock() BOOST_NOEXCEPT
165
+ namespace boost { namespace move_detail {
166
+
167
+ BOOST_MOVE_FORCEINLINE boost::uint64_t nsec_clock() BOOST_NOEXCEPT
162
168
  {
163
169
  struct timespec count;
164
170
  ::clock_gettime(BOOST_MOVE_DETAIL_CLOCK_MONOTONIC, &count);
@@ -168,6 +174,8 @@ inline boost::uint64_t nsec_clock() BOOST_NOEXCEPT
168
174
  return r;
169
175
  }
170
176
 
177
+ }} //namespace boost { namespace move_detail {
178
+
171
179
  #endif // POSIX
172
180
 
173
181
  namespace boost { namespace move_detail {
@@ -198,7 +206,7 @@ class cpu_timer
198
206
  public:
199
207
 
200
208
  // constructor
201
- cpu_timer() BOOST_NOEXCEPT { start(); }
209
+ cpu_timer() BOOST_NOEXCEPT : m_is_stopped(true) {}
202
210
 
203
211
  // observers
204
212
  bool is_stopped() const BOOST_NOEXCEPT { return m_is_stopped; }
@@ -1352,6 +1352,82 @@ struct aligned_storage
1352
1352
  } //namespace move_detail {
1353
1353
  } //namespace boost {
1354
1354
 
1355
+
1356
+ #include <boost/move/detail/std_ns_begin.hpp>
1357
+ BOOST_MOVE_STD_NS_BEG
1358
+
1359
+ template<class T1, class T2>
1360
+ struct pair;
1361
+
1362
+ BOOST_MOVE_STD_NS_END
1363
+ #include <boost/move/detail/std_ns_end.hpp>
1364
+
1365
+ namespace boost {
1366
+ namespace move_detail {
1367
+
1368
+ template<class A, class B>
1369
+ struct is_trivially_copy_assignable<std::pair<A,B> >
1370
+ {
1371
+ BOOST_STATIC_CONSTEXPR bool value = boost::move_detail::is_trivially_copy_assignable<A>::value &&
1372
+ boost::move_detail::is_trivially_copy_assignable<B>::value;
1373
+ };
1374
+
1375
+ template<class A, class B>
1376
+ struct is_trivially_move_assignable<std::pair<A,B> >
1377
+ {
1378
+ BOOST_STATIC_CONSTEXPR bool value = boost::move_detail::is_trivially_move_assignable<A>::value &&
1379
+ boost::move_detail::is_trivially_move_assignable<B>::value;
1380
+ };
1381
+
1382
+ template<class A, class B>
1383
+ struct is_trivially_copy_constructible<std::pair<A,B> >
1384
+ {
1385
+ BOOST_STATIC_CONSTEXPR bool value = boost::move_detail::is_trivially_copy_constructible<A>::value &&
1386
+ boost::move_detail::is_trivially_copy_constructible<B>::value;
1387
+ };
1388
+
1389
+ template<class A, class B>
1390
+ struct is_trivially_move_constructible<std::pair<A,B> >
1391
+ {
1392
+ BOOST_STATIC_CONSTEXPR bool value = boost::move_detail::is_trivially_move_constructible<A>::value &&
1393
+ boost::move_detail::is_trivially_move_constructible<B>::value;
1394
+ };
1395
+
1396
+ template<class A, class B>
1397
+ struct is_trivially_destructible<std::pair<A,B> >
1398
+ {
1399
+ BOOST_STATIC_CONSTEXPR bool value = boost::move_detail::is_trivially_destructible<A>::value &&
1400
+ boost::move_detail::is_trivially_destructible<B>::value;
1401
+ };
1402
+
1403
+ template <class T1, class T2>
1404
+ struct is_class< std::pair<T1, T2> >
1405
+ //This specialization is needed to avoid instantiation of pair in
1406
+ //is_class, and allow recursive maps.
1407
+ {
1408
+ BOOST_STATIC_CONSTEXPR bool value = true;
1409
+ };
1410
+
1411
+ template <class T1, class T2>
1412
+ struct is_union< std::pair<T1, T2> >
1413
+ //This specialization is needed to avoid instantiation of pair in
1414
+ //is_class, and allow recursive maps.
1415
+ {
1416
+ BOOST_STATIC_CONSTEXPR bool value = false;
1417
+ };
1418
+
1419
+ template <class T1, class T2>
1420
+ struct is_class_or_union< std::pair<T1, T2> >
1421
+ //This specialization is needed to avoid instantiation of pair in
1422
+ //is_class, and allow recursive maps.
1423
+ {
1424
+ BOOST_STATIC_CONSTEXPR bool value = true;
1425
+ };
1426
+
1427
+ } //namespace move_detail {
1428
+ } //namespace boost {
1429
+
1430
+
1355
1431
  #include <boost/move/detail/config_end.hpp>
1356
1432
 
1357
1433
  #endif //#ifndef BOOST_MOVE_DETAIL_TYPE_TRAITS_HPP
@@ -61,7 +61,7 @@
61
61
  #elif defined(BOOST_MSVC) && (_MSC_VER < 1900 || defined(_DEBUG))
62
62
  //"__forceinline" and MSVC seems to have some bugs in old versions and in debug mode
63
63
  #define BOOST_MOVE_FORCEINLINE inline
64
- #elif defined(BOOST_CLANG) || (defined(BOOST_GCC) && ((__GNUC__ <= 5) || defined(__MINGW32__)))
64
+ #elif defined(BOOST_GCC) && (__GNUC__ <= 5)
65
65
  //Older GCCs have problems with forceinline
66
66
  //Clang can have code bloat issues with forceinline, see
67
67
  //https://lists.boost.org/boost-users/2023/04/91445.php and
@@ -57,6 +57,17 @@ struct has_nothrow_move
57
57
  boost::move_detail::is_nothrow_move_assignable<T>::value;
58
58
  };
59
59
 
60
+ #ifndef BOOST_MOVE_DOXYGEN_INVOKED
61
+
62
+ template<class A, class B>
63
+ struct has_trivial_destructor_after_move<std::pair<A,B> >
64
+ {
65
+ BOOST_STATIC_CONSTEXPR bool value = boost::has_trivial_destructor_after_move<A>::value &&
66
+ boost::has_trivial_destructor_after_move<B>::value;
67
+ };
68
+
69
+ #endif
70
+
60
71
  namespace move_detail {
61
72
 
62
73
  template <class T>
@@ -153,13 +153,13 @@ template<class Q, class... L> using mp_transform_q = mp_transform<Q::template fn
153
153
  namespace detail
154
154
  {
155
155
 
156
+ template<class V, class T> using mp_transform_impl_f = mp_transform<mp_push_back, V, T>;
157
+
156
158
  template<template<class...> class F, template<class...> class L1, class... T1, template<class...> class L2, class... T2, template<class...> class L3, class... T3, template<class...> class L4, class... T4, class... L> struct mp_transform_impl<F, L1<T1...>, L2<T2...>, L3<T3...>, L4<T4...>, L...>
157
159
  {
158
160
  using A1 = L1<mp_list<T1, T2, T3, T4>...>;
159
161
 
160
- template<class V, class T> using _f = mp_transform<mp_push_back, V, T>;
161
-
162
- using A2 = mp_fold<mp_list<L...>, A1, _f>;
162
+ using A2 = mp_fold<mp_list<L...>, A1, mp_transform_impl_f>;
163
163
 
164
164
  template<class T> using _g = mp_apply<F, T>;
165
165
 
@@ -172,7 +172,7 @@ template<template<class...> class F, template<class...> class L1, class... T1, t
172
172
  namespace detail
173
173
  {
174
174
 
175
- template<template<class...> class P, template<class...> class F, class... L> struct mp_transform_if_impl
175
+ template<template<class...> class P, template<class...> class F> struct mp_transform_if_impl_f
176
176
  {
177
177
  // the stupid quote-unquote dance avoids "pack expansion used as argument for non-pack parameter of alias template"
178
178
 
@@ -181,16 +181,19 @@ template<template<class...> class P, template<class...> class F, class... L> str
181
181
 
182
182
  #if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 )
183
183
 
184
- template<class... U> struct _f_ { using type = mp_eval_if_q<mp_not<mp_invoke_q<Qp, U...>>, mp_first<mp_list<U...>>, Qf, U...>; };
185
- template<class... U> using _f = typename _f_<U...>::type;
184
+ template<class... U> struct _f { using type = mp_eval_if_q<mp_not<mp_invoke_q<Qp, U...>>, mp_first<mp_list<U...>>, Qf, U...>; };
185
+ template<class... U> using fn = typename _f<U...>::type;
186
186
 
187
187
  #else
188
188
 
189
- template<class... U> using _f = mp_eval_if_q<mp_not<mp_invoke_q<Qp, U...>>, mp_first<mp_list<U...>>, Qf, U...>;
189
+ template<class... U> using fn = mp_eval_if_q<mp_not<mp_invoke_q<Qp, U...>>, mp_first<mp_list<U...>>, Qf, U...>;
190
190
 
191
191
  #endif
192
+ };
192
193
 
193
- using type = mp_transform<_f, L...>;
194
+ template<template<class...> class P, template<class...> class F, class... L> struct mp_transform_if_impl
195
+ {
196
+ using type = mp_transform_q<mp_transform_if_impl_f<P, F>, L...>;
194
197
  };
195
198
 
196
199
  } // namespace detail
@@ -202,13 +205,16 @@ template<class Qp, class Qf, class... L> using mp_transform_if_q = typename deta
202
205
  namespace detail
203
206
  {
204
207
 
205
- template<template<class...> class P, class L1, class... L> struct mp_filter_impl
208
+ template<template<class...> class P> struct mp_filter_impl_f
206
209
  {
207
210
  using Qp = mp_quote<P>;
208
211
 
209
- template<class T1, class... T> using _f = mp_if< mp_invoke_q<Qp, T1, T...>, mp_list<T1>, mp_list<> >;
212
+ template<class T1, class... T> using fn = mp_if< mp_invoke_q<Qp, T1, T...>, mp_list<T1>, mp_list<> >;
213
+ };
210
214
 
211
- using _t1 = mp_transform<_f, L1, L...>;
215
+ template<template<class...> class P, class L1, class... L> struct mp_filter_impl
216
+ {
217
+ using _t1 = mp_transform_q<mp_filter_impl_f<P>, L1, L...>;
212
218
  using _t2 = mp_apply<mp_append, _t1>;
213
219
 
214
220
  using type = mp_assign<L1, _t2>;
@@ -228,6 +234,8 @@ template<class L, class V> struct mp_fill_impl
228
234
  // An error "no type named 'type'" here means that the L argument of mp_fill is not a list
229
235
  };
230
236
 
237
+ template<class T, class U> using mp_fill_impl_f = T;
238
+
231
239
  template<template<class...> class L, class... T, class V> struct mp_fill_impl<L<T...>, V>
232
240
  {
233
241
  #if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1900 )
@@ -237,8 +245,7 @@ template<template<class...> class L, class... T, class V> struct mp_fill_impl<L<
237
245
 
238
246
  #else
239
247
 
240
- template<class...> using _f = V;
241
- using type = L<_f<T>...>;
248
+ using type = L< mp_fill_impl_f<V, T>... >;
242
249
 
243
250
  #endif
244
251
  };
@@ -329,11 +336,14 @@ namespace detail
329
336
 
330
337
  template<class L, class L2, class En> struct mp_drop_impl;
331
338
 
332
- template<template<class...> class L, class... T, template<class...> class L2, class... U> struct mp_drop_impl<L<T...>, L2<U...>, mp_true>
339
+ template<template<class...> class L, class... U> struct mp_drop_impl_f
333
340
  {
334
341
  template<class... W> static mp_identity<L<W...>> f( U*..., mp_identity<W>*... );
342
+ };
335
343
 
336
- using R = decltype( f( static_cast<mp_identity<T>*>(0) ... ) );
344
+ template<template<class...> class L, class... T, template<class...> class L2, class... U> struct mp_drop_impl<L<T...>, L2<U...>, mp_true>
345
+ {
346
+ using R = decltype( mp_drop_impl_f<L, U...>::f( static_cast<mp_identity<T>*>(0) ... ) );
337
347
 
338
348
  using type = typename R::type;
339
349
  };
@@ -524,8 +534,7 @@ template<template<class...> class L, class... T, class V, class W> struct mp_rep
524
534
  template<class A> struct _f { using type = mp_if<std::is_same<A, V>, W, A>; };
525
535
  using type = L<typename _f<T>::type...>;
526
536
  #else
527
- template<class A> using _f = mp_if<std::is_same<A, V>, W, A>;
528
- using type = L<_f<T>...>;
537
+ using type = L<mp_if<std::is_same<T, V>, W, T>...>;
529
538
  #endif
530
539
  };
531
540
 
@@ -545,8 +554,7 @@ template<template<class...> class L, class... T, template<class...> class P, cla
545
554
  template<class U> struct _f { using type = mp_if<P<U>, W, U>; };
546
555
  using type = L<typename _f<T>::type...>;
547
556
  #else
548
- template<class U> using _f = mp_if<P<U>, W, U>;
549
- using type = L<_f<T>...>;
557
+ using type = L<mp_if<P<T>, W, T>...>;
550
558
  #endif
551
559
  };
552
560
 
@@ -570,8 +578,7 @@ template<template<class...> class L, class... T, class V> struct mp_remove_impl<
570
578
  template<class U> struct _f { using type = mp_if<std::is_same<U, V>, mp_list<>, mp_list<U>>; };
571
579
  using type = mp_append<L<>, typename _f<T>::type...>;
572
580
  #else
573
- template<class U> using _f = mp_if<std::is_same<U, V>, mp_list<>, mp_list<U>>;
574
- using type = mp_append<L<>, _f<T>...>;
581
+ using type = mp_append<L<>, mp_if<std::is_same<T, V>, mp_list<>, mp_list<T>>...>;
575
582
  #endif
576
583
  };
577
584
 
@@ -639,11 +646,14 @@ template<template<class...> class L, class T1, template<class...> class P> struc
639
646
  using type = L<T1>;
640
647
  };
641
648
 
642
- template<template<class...> class L, class T1, class... T, template<class...> class P> struct mp_sort_impl<L<T1, T...>, P>
649
+ template<class T1, template<class...> class P> struct mp_sort_impl_f
643
650
  {
644
- template<class U> using F = P<U, T1>;
651
+ template<class U> using fn = P<U, T1>;
652
+ };
645
653
 
646
- using part = mp_partition<L<T...>, F>;
654
+ template<template<class...> class L, class T1, class... T, template<class...> class P> struct mp_sort_impl<L<T1, T...>, P>
655
+ {
656
+ using part = mp_partition_q<L<T...>, mp_sort_impl_f<T1, P>>;
647
657
 
648
658
  using S1 = typename mp_sort_impl<mp_first<part>, P>::type;
649
659
  using S2 = typename mp_sort_impl<mp_second<part>, P>::type;
@@ -672,9 +682,7 @@ template<template<class...> class L, class T1, class... T, std::size_t I, templa
672
682
  {
673
683
  static_assert( I < 1 + sizeof...(T), "mp_nth_element index out of range" );
674
684
 
675
- template<class U> using F = P<U, T1>;
676
-
677
- using part = mp_partition<L<T...>, F>;
685
+ using part = mp_partition_q<L<T...>, mp_sort_impl_f<T1, P>>;
678
686
 
679
687
  using L1 = mp_first<part>;
680
688
  static std::size_t const N1 = mp_size<L1>::value;
@@ -1030,14 +1038,21 @@ template<class L, class Q> using mp_any_of_q = mp_any_of<L, Q::template fn>;
1030
1038
  namespace detail
1031
1039
  {
1032
1040
 
1041
+ template<class I> struct mp_replace_at_impl_p
1042
+ {
1043
+ template<class T1, class T2> using fn = std::is_same<T2, I>;
1044
+ };
1045
+
1046
+ template<class W> struct mp_replace_at_impl_f
1047
+ {
1048
+ template<class T1, class T2> using fn = W;
1049
+ };
1050
+
1033
1051
  template<class L, class I, class W> struct mp_replace_at_impl
1034
1052
  {
1035
1053
  static_assert( I::value >= 0, "mp_replace_at<L, I, W>: I must not be negative" );
1036
1054
 
1037
- template<class T1, class T2> using _p = std::is_same<T2, mp_size_t<I::value>>;
1038
- template<class T1, class T2> using _f = W;
1039
-
1040
- using type = mp_transform_if<_p, _f, L, mp_iota<mp_size<L> > >;
1055
+ using type = mp_transform_if_q<mp_replace_at_impl_p<mp_size_t<I::value>>, mp_replace_at_impl_f<W>, L, mp_iota<mp_size<L> > >;
1041
1056
  };
1042
1057
 
1043
1058
  } // namespace detail
@@ -1182,13 +1197,16 @@ template<template<class...> class L> struct mp_power_set_impl< L<> >
1182
1197
 
1183
1198
  #endif
1184
1199
 
1200
+ template<class T1> struct mp_power_set_impl_f
1201
+ {
1202
+ template<class L2> using fn = mp_push_front<L2, T1>;
1203
+ };
1204
+
1185
1205
  template<template<class...> class L, class T1, class... T> struct mp_power_set_impl< L<T1, T...> >
1186
1206
  {
1187
1207
  using S1 = mp_power_set< L<T...> >;
1188
1208
 
1189
- template<class L2> using _f = mp_push_front<L2, T1>;
1190
-
1191
- using S2 = mp_transform<_f, S1>;
1209
+ using S2 = mp_transform_q<mp_power_set_impl_f<T1>, S1>;
1192
1210
 
1193
1211
  using type = mp_append< S1, S2 >;
1194
1212
  };
@@ -1260,15 +1278,18 @@ template<class L, template<class...> class F> using mp_pairwise_fold = mp_pairwi
1260
1278
  namespace detail
1261
1279
  {
1262
1280
 
1281
+ template<class L, std::size_t M> struct mp_sliding_fold_impl_f
1282
+ {
1283
+ template<class I> using fn = mp_slice_c<L, I::value, I::value + M>;
1284
+ };
1285
+
1263
1286
  template<class C, class L, class Q, class S> struct mp_sliding_fold_impl;
1264
1287
 
1265
1288
  template<class L, class N, class Q> struct mp_sliding_fold_impl<mp_true, L, N, Q>
1266
1289
  {
1267
1290
  static const std::size_t M = mp_size<L>::value - N::value + 1;
1268
1291
 
1269
- template<class I> using F = mp_slice_c<L, I::value, I::value + M>;
1270
-
1271
- using J = mp_transform<F, mp_iota<N>>;
1292
+ using J = mp_transform_q<mp_sliding_fold_impl_f<L, M>, mp_iota<N>>;
1272
1293
 
1273
1294
  using type = mp_apply<mp_transform_q, mp_push_front<J, Q>>;
1274
1295
  };
@@ -32,8 +32,7 @@ template<template<class...> class L, class... T, template<class...> class P> str
32
32
  template<class U> struct _f { using type = mp_if<P<U>, mp_list<U>, mp_list<>>; };
33
33
  using type = mp_append<L<>, typename _f<T>::type...>;
34
34
  #else
35
- template<class U> using _f = mp_if<P<U>, mp_list<U>, mp_list<>>;
36
- using type = mp_append<L<>, _f<T>...>;
35
+ using type = mp_append<L<>, mp_if<P<T>, mp_list<T>, mp_list<>>...>;
37
36
  #endif
38
37
  };
39
38
 
@@ -11,7 +11,8 @@
11
11
  #include <boost/mp11/utility.hpp>
12
12
  #include <boost/mp11/detail/config.hpp>
13
13
 
14
- #if BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, >= 140000 )
14
+ #if (BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, >= 140000 ) && BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 140400 )) \
15
+ || (BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, >= 150000 ) && BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 150200 ))
15
16
 
16
17
  #include <boost/mp11/detail/mp_list.hpp>
17
18
  #include <boost/mp11/detail/mp_append.hpp>
@@ -34,20 +35,24 @@ namespace boost
34
35
  namespace mp11
35
36
  {
36
37
 
37
- #if BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, >= 140000 )
38
+ #if (BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, >= 140000 ) && BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 140400 )) \
39
+ || (BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, >= 150000 ) && BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 150200 ))
38
40
 
39
41
  // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120161
40
42
 
41
43
  namespace detail
42
44
  {
43
45
 
46
+ template<class K, class T> struct mp_map_find_impl_k
47
+ {
48
+ using type = mp_if<std::is_same<mp_front<T>, K>, mp_list<T>, mp_list<>>;
49
+ };
50
+
44
51
  template<class M, class K> struct mp_map_find_impl;
45
52
 
46
53
  template<template<class...> class M, class... T, class K> struct mp_map_find_impl<M<T...>, K>
47
54
  {
48
- template<class U> using _f = mp_if<std::is_same<mp_front<U>, K>, mp_list<U>, mp_list<>>;
49
-
50
- using _l = mp_append<_f<T>..., mp_list<void>>;
55
+ using _l = mp_append<typename mp_map_find_impl_k<K, T>::type..., mp_list<void>>;
51
56
 
52
57
  using type = mp_front<_l>;
53
58
  };
@@ -99,14 +104,17 @@ template<class T> using mpmf_unwrap = typename mpmf_unwrap_impl<T>::type;
99
104
 
100
105
  template<class M, class K> struct mp_map_find_impl;
101
106
 
102
- template<template<class...> class M, class... T, class K> struct mp_map_find_impl<M<T...>, K>
107
+ template<class K> struct mp_map_find_impl_f
103
108
  {
104
- using U = mp_inherit<mpmf_wrap<T>...>;
105
-
106
109
  template<template<class...> class L, class... U> static mp_identity<L<K, U...>> f( mp_identity<L<K, U...>>* );
107
110
  static mp_identity<void> f( ... );
111
+ };
112
+
113
+ template<template<class...> class M, class... T, class K> struct mp_map_find_impl<M<T...>, K>
114
+ {
115
+ using U = mp_inherit<mpmf_wrap<T>...>;
108
116
 
109
- using type = mpmf_unwrap< decltype( f( static_cast<U*>(0) ) ) >;
117
+ using type = mpmf_unwrap< decltype( mp_map_find_impl_f<K>::f( static_cast<U*>(0) ) ) >;
110
118
  };
111
119
 
112
120
  } // namespace detail
@@ -32,8 +32,7 @@ template<template<class...> class L, class... T, template<class...> class P> str
32
32
  template<class U> struct _f { using type = mp_if<P<U>, mp_list<>, mp_list<U>>; };
33
33
  using type = mp_append<L<>, typename _f<T>::type...>;
34
34
  #else
35
- template<class U> using _f = mp_if<P<U>, mp_list<>, mp_list<U>>;
36
- using type = mp_append<L<>, _f<T>...>;
35
+ using type = mp_append<L<>, mp_if<P<T>, mp_list<>, mp_list<T>>...>;
37
36
  #endif
38
37
  };
39
38
 
@@ -19,6 +19,8 @@
19
19
  #if defined(__has_builtin)
20
20
  # if __has_builtin(__make_integer_seq)
21
21
  # define BOOST_MP11_HAS_MAKE_INTEGER_SEQ
22
+ # elif __has_builtin(__integer_pack)
23
+ # define BOOST_MP11_HAS_INTEGER_PACK
22
24
  # endif
23
25
  #endif
24
26
 
@@ -36,6 +38,10 @@ template<class T, T... I> struct integer_sequence
36
38
 
37
39
  template<class T, T N> using make_integer_sequence = __make_integer_seq<integer_sequence, T, N>;
38
40
 
41
+ #elif defined(BOOST_MP11_HAS_INTEGER_PACK)
42
+
43
+ template<class T, T N> using make_integer_sequence = integer_sequence<T, __integer_pack(N)...>;
44
+
39
45
  #else
40
46
 
41
47
  // detail::make_integer_sequence_impl
@@ -11,6 +11,6 @@
11
11
  // Same format as BOOST_VERSION:
12
12
  // major * 100000 + minor * 100 + patch
13
13
 
14
- #define BOOST_MP11_VERSION 109000
14
+ #define BOOST_MP11_VERSION 109200
15
15
 
16
16
  #endif // #ifndef BOOST_MP11_VERSION_HPP_INCLUDED