passenger 6.1.0 → 6.1.1

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 (440) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +32 -2
  3. data/Rakefile +6 -13
  4. data/bin/passenger-install-apache2-module +15 -19
  5. data/bin/passenger-install-nginx-module +42 -44
  6. data/bin/passenger-status +9 -10
  7. data/build/common_library.rb +4 -4
  8. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  9. data/build/test_basics.rb +4 -3
  10. data/dev/copy_boost_headers +54 -40
  11. data/dev/ruby_server.rb +1 -1
  12. data/src/agent/Core/Config.h +1 -1
  13. data/src/agent/Core/Controller/Config.h +1 -1
  14. data/src/agent/Watchdog/Config.h +1 -1
  15. data/src/cxx_supportlib/Constants.h +1 -1
  16. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
  17. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
  18. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
  19. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
  20. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
  21. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
  22. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
  23. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
  24. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
  25. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
  26. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
  27. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
  28. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
  30. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
  31. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
  32. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
  33. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
  34. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
  35. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
  36. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
  37. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
  38. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
  39. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
  40. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
  42. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
  43. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
  44. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
  45. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
  46. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
  47. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
  48. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
  49. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
  50. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
  51. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
  52. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
  53. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
  54. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
  55. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
  56. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
  57. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
  58. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
  59. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
  62. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
  63. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
  64. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
  66. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
  67. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
  69. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
  70. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
  71. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
  72. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
  73. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
  75. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
  76. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
  78. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
  79. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
  115. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
  116. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
  117. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
  120. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
  121. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
  123. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
  125. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
  129. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
  130. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
  131. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
  132. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
  134. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
  135. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
  136. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
  137. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
  139. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
  142. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
  144. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
  145. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
  148. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
  149. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
  151. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
  154. data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
  155. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
  156. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
  157. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
  160. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
  161. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
  165. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
  169. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
  170. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
  171. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
  172. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
  174. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
  179. data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
  181. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
  182. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
  183. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
  184. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
  185. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
  186. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
  187. data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
  189. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
  190. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
  191. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
  196. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
  198. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
  201. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
  203. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
  204. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
  206. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
  207. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
  211. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
  212. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
  216. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
  219. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
  220. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
  221. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
  223. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
  224. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
  225. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
  229. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
  232. data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
  233. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
  235. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
  236. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
  237. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
  239. data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
  249. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
  250. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
  251. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
  252. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
  253. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
  254. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
  255. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
  256. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
  257. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
  259. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
  261. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
  264. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
  267. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
  268. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
  271. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
  272. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
  273. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
  274. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
  275. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
  276. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
  277. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
  298. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
  299. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
  314. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
  315. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
  316. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
  317. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
  319. data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
  320. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
  321. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  326. data/src/nginx_module/ContentHandler.c +2 -0
  327. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
  328. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
  329. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
  330. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
  331. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  332. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
  333. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
  334. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
  335. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
  336. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
  337. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
  338. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
  339. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
  340. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
  341. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  342. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  343. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  344. metadata +26 -99
  345. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
  346. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
  347. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
  348. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
  349. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
  350. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
  351. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
  352. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
  353. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
  354. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
  355. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
  356. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
  357. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
  358. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
  359. data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
  360. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
  361. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
  362. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
  363. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
  364. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
  365. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
  366. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
  367. data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
  368. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
  369. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
  370. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
  371. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
  372. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
  373. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
  374. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
  375. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
  376. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
  377. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
  378. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
  379. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
  380. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
  381. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
  382. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
  383. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
  384. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
  385. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
  386. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
  387. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
  388. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
  389. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
  390. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
  391. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
  392. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
  393. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
  394. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
  395. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
  396. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
  397. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
  398. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
  399. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
  400. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
  401. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
  402. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
  403. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
  404. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
  405. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
  406. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
  407. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
  408. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
  409. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
  410. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
  411. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
  412. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
  413. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
  414. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
  415. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
  416. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
  417. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
  418. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
  419. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
  420. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
  421. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
  422. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
  423. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
  424. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
  425. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
  426. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
  427. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
  428. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
  429. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
  430. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
  431. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
  432. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
  433. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
  434. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
  435. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
  436. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
  437. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
  438. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
  439. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
  440. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +0 -94
@@ -2,30 +2,17 @@
2
2
  // subject to the Boost Software License, Version 1.0. (See accompanying
3
3
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
4
4
  #ifndef FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
5
- # define FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
5
+ #define FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
6
6
 
7
- # include <boost/core/use_default.hpp>
7
+ #include <iterator>
8
+ #include <type_traits>
8
9
 
9
- # include <boost/iterator/iterator_categories.hpp>
10
+ #include <boost/mp11/utility.hpp>
10
11
 
11
- # include <boost/mpl/or.hpp> // used in iterator_tag inheritance logic
12
- # include <boost/mpl/and.hpp>
13
- # include <boost/mpl/if.hpp>
14
- # include <boost/mpl/eval_if.hpp>
15
- # include <boost/mpl/identity.hpp>
16
-
17
- # include <boost/static_assert.hpp>
18
-
19
- # include <boost/type_traits/is_same.hpp>
20
- # include <boost/type_traits/is_const.hpp>
21
- # include <boost/type_traits/is_reference.hpp>
22
- # include <boost/type_traits/is_convertible.hpp>
23
-
24
- # include <boost/iterator/detail/config_def.hpp> // try to keep this last
25
-
26
- # ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
27
- # include <boost/detail/indirect_traits.hpp>
28
- # endif
12
+ #include <boost/iterator/iterator_categories.hpp>
13
+ #include <boost/iterator/detail/type_traits/conjunction.hpp>
14
+ #include <boost/iterator/detail/type_traits/disjunction.hpp>
15
+ #include <boost/iterator/detail/config_def.hpp> // try to keep this last
29
16
 
30
17
  //
31
18
  // iterator_category deduction for iterator_facade
@@ -33,45 +20,49 @@
33
20
 
34
21
  namespace boost {
35
22
  namespace iterators {
23
+ namespace detail {
36
24
 
37
- using boost::use_default;
25
+ #ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
38
26
 
39
- namespace detail {
27
+ template< typename T >
28
+ struct is_const_lvalue_reference :
29
+ public std::false_type
30
+ {};
40
31
 
41
- struct input_output_iterator_tag
42
- : std::input_iterator_tag
43
- {
44
- // Using inheritance for only input_iterator_tag helps to avoid
45
- // ambiguities when a stdlib implementation dispatches on a
46
- // function which is overloaded on both input_iterator_tag and
47
- // output_iterator_tag, as STLPort does, in its __valid_range
48
- // function. I claim it's better to avoid the ambiguity in these
49
- // cases.
50
- operator std::output_iterator_tag() const
51
- {
52
- return std::output_iterator_tag();
53
- }
54
- };
32
+ template< typename T >
33
+ struct is_const_lvalue_reference< T const& > :
34
+ public std::true_type
35
+ {};
36
+
37
+ #endif // BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
55
38
 
56
39
  //
57
40
  // True iff the user has explicitly disabled writability of this
58
41
  // iterator. Pass the iterator_facade's Value parameter and its
59
42
  // nested ::reference type.
60
43
  //
61
- template <class ValueParam, class Reference>
62
- struct iterator_writability_disabled
44
+ template< typename ValueParam, typename Reference >
45
+ struct iterator_writability_disabled :
63
46
  # ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY // Adding Thomas' logic?
64
- : mpl::or_<
65
- is_const<Reference>
66
- , boost::detail::indirect_traits::is_reference_to_const<Reference>
67
- , is_const<ValueParam>
47
+ public detail::disjunction<
48
+ detail::is_const_lvalue_reference< Reference >,
49
+ std::is_const< Reference >,
50
+ std::is_const< ValueParam >
68
51
  >
69
52
  # else
70
- : is_const<ValueParam>
53
+ public std::is_const< ValueParam >
71
54
  # endif
72
55
  {};
73
56
 
74
57
 
58
+ template< typename Traversal, typename ValueParam, typename Reference >
59
+ using is_traversal_of_input_iterator = detail::conjunction<
60
+ std::is_convertible< Traversal, single_pass_traversal_tag >,
61
+
62
+ // check for readability
63
+ std::is_convertible< Reference, ValueParam >
64
+ >;
65
+
75
66
  //
76
67
  // Convert an iterator_facade's traversal category, Value parameter,
77
68
  // and ::reference type to an appropriate old-style category.
@@ -80,114 +71,109 @@ struct iterator_writability_disabled
80
71
  // to output_iterator_tag.
81
72
  //
82
73
  // Change at: https://svn.boost.org/trac/boost/changeset/21683
83
- template <class Traversal, class ValueParam, class Reference>
74
+ template< typename Traversal, typename ValueParam, typename Reference >
84
75
  struct iterator_facade_default_category
85
- : mpl::eval_if<
86
- mpl::and_<
87
- is_reference<Reference>
88
- , is_convertible<Traversal,forward_traversal_tag>
89
- >
90
- , mpl::eval_if<
91
- is_convertible<Traversal,random_access_traversal_tag>
92
- , mpl::identity<std::random_access_iterator_tag>
93
- , mpl::if_<
94
- is_convertible<Traversal,bidirectional_traversal_tag>
95
- , std::bidirectional_iterator_tag
96
- , std::forward_iterator_tag
97
- >
98
- >
99
- , typename mpl::eval_if<
100
- mpl::and_<
101
- is_convertible<Traversal, single_pass_traversal_tag>
102
-
103
- // check for readability
104
- , is_convertible<Reference, ValueParam>
105
- >
106
- , mpl::identity<std::input_iterator_tag>
107
- , mpl::identity<Traversal>
108
- >
109
- >
110
76
  {
77
+ using type = typename std::conditional<
78
+ detail::is_traversal_of_input_iterator< Traversal, ValueParam, Reference >::value,
79
+ std::input_iterator_tag,
80
+ Traversal
81
+ >::type;
111
82
  };
112
83
 
113
- // True iff T is convertible to an old-style iterator category.
114
- template <class T>
115
- struct is_iterator_category
116
- : mpl::or_<
117
- is_convertible<T,std::input_iterator_tag>
118
- , is_convertible<T,std::output_iterator_tag>
119
- >
84
+ // Specialization for the (typical) case when the reference type is an actual reference
85
+ template< typename Traversal, typename ValueParam, typename Referenced >
86
+ struct iterator_facade_default_category< Traversal, ValueParam, Referenced& >
120
87
  {
88
+ using type = mp11::mp_cond<
89
+ std::is_convertible< Traversal, random_access_traversal_tag >, std::random_access_iterator_tag,
90
+ std::is_convertible< Traversal, bidirectional_traversal_tag >, std::bidirectional_iterator_tag,
91
+ std::is_convertible< Traversal, forward_traversal_tag >, std::forward_iterator_tag,
92
+ detail::is_traversal_of_input_iterator< Traversal, ValueParam, Referenced& >, std::input_iterator_tag,
93
+ std::true_type, Traversal
94
+ >;
121
95
  };
122
96
 
123
- template <class T>
124
- struct is_iterator_traversal
125
- : is_convertible<T,incrementable_traversal_tag>
97
+ template< typename Traversal, typename ValueParam, typename Reference >
98
+ using iterator_facade_default_category_t = typename iterator_facade_default_category< Traversal, ValueParam, Reference >::type;
99
+
100
+ // True iff T is convertible to an old-style iterator category.
101
+ template< typename T >
102
+ struct is_iterator_category :
103
+ public detail::disjunction<
104
+ std::is_convertible< T, std::input_iterator_tag >,
105
+ std::is_convertible< T, std::output_iterator_tag >
106
+ >
107
+ {};
108
+
109
+ template< typename T >
110
+ struct is_iterator_traversal :
111
+ public std::is_convertible< T, incrementable_traversal_tag >
126
112
  {};
127
113
 
114
+
128
115
  //
129
116
  // A composite iterator_category tag convertible to Category (a pure
130
117
  // old-style category) and Traversal (a pure traversal tag).
131
118
  // Traversal must be a strict increase of the traversal power given by
132
119
  // Category.
133
120
  //
134
- template <class Category, class Traversal>
135
- struct iterator_category_with_traversal
136
- : Category, Traversal
121
+ template< typename Category, typename Traversal >
122
+ struct iterator_category_with_traversal :
123
+ public Category,
124
+ public Traversal
137
125
  {
138
126
  // Make sure this isn't used to build any categories where
139
127
  // convertibility to Traversal is redundant. Should just use the
140
128
  // Category element in that case.
141
- BOOST_STATIC_ASSERT((
142
- !is_convertible<
143
- typename iterator_category_to_traversal<Category>::type
144
- , Traversal
145
- >::value));
146
-
147
- BOOST_STATIC_ASSERT(is_iterator_category<Category>::value);
148
- BOOST_STATIC_ASSERT(!is_iterator_category<Traversal>::value);
149
- BOOST_STATIC_ASSERT(!is_iterator_traversal<Category>::value);
150
- # if !BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
151
- BOOST_STATIC_ASSERT(is_iterator_traversal<Traversal>::value);
152
- # endif
129
+ static_assert(
130
+ !std::is_convertible< iterator_category_to_traversal_t< Category >, Traversal >::value,
131
+ "Category transformed to corresponding traversal must be convertible to Traversal."
132
+ );
133
+
134
+ static_assert(is_iterator_category< Category >::value, "Category must be an STL iterator category.");
135
+ static_assert(!is_iterator_category< Traversal >::value, "Traversal must not be an STL iterator category.");
136
+ static_assert(!is_iterator_traversal< Category >::value, "Category must not be a traversal tag.");
137
+ static_assert(is_iterator_traversal< Traversal >::value, "Traversal must be a traversal tag.");
153
138
  };
154
139
 
155
140
  // Computes an iterator_category tag whose traversal is Traversal and
156
141
  // which is appropriate for an iterator
157
- template <class Traversal, class ValueParam, class Reference>
142
+ template< typename Traversal, typename ValueParam, typename Reference >
158
143
  struct facade_iterator_category_impl
159
144
  {
160
- BOOST_STATIC_ASSERT(!is_iterator_category<Traversal>::value);
161
-
162
- typedef typename iterator_facade_default_category<
163
- Traversal,ValueParam,Reference
164
- >::type category;
165
-
166
- typedef typename mpl::if_<
167
- is_same<
168
- Traversal
169
- , typename iterator_category_to_traversal<category>::type
170
- >
171
- , category
172
- , iterator_category_with_traversal<category,Traversal>
173
- >::type type;
145
+ static_assert(!is_iterator_category< Traversal >::value, "Traversal must not be an STL iterator category.");
146
+
147
+ using category = iterator_facade_default_category_t< Traversal, ValueParam, Reference >;
148
+
149
+ using type = typename std::conditional<
150
+ std::is_same<
151
+ Traversal,
152
+ typename iterator_category_to_traversal< category >::type
153
+ >::value,
154
+ category,
155
+ iterator_category_with_traversal< category, Traversal >
156
+ >::type;
174
157
  };
175
158
 
159
+ template< typename Traversal, typename ValueParam, typename Reference >
160
+ using facade_iterator_category_impl_t = typename facade_iterator_category_impl< Traversal, ValueParam, Reference >::type;
161
+
176
162
  //
177
163
  // Compute an iterator_category for iterator_facade
178
164
  //
179
- template <class CategoryOrTraversal, class ValueParam, class Reference>
165
+ template< typename CategoryOrTraversal, typename ValueParam, typename Reference >
180
166
  struct facade_iterator_category
181
- : mpl::eval_if<
182
- is_iterator_category<CategoryOrTraversal>
183
- , mpl::identity<CategoryOrTraversal> // old-style categories are fine as-is
184
- , facade_iterator_category_impl<CategoryOrTraversal,ValueParam,Reference>
185
- >
186
167
  {
168
+ using type = mp11::mp_eval_if<
169
+ is_iterator_category< CategoryOrTraversal >,
170
+ CategoryOrTraversal, // old-style categories are fine as-is
171
+ facade_iterator_category_impl_t, CategoryOrTraversal, ValueParam, Reference
172
+ >;
187
173
  };
188
174
 
189
175
  }}} // namespace boost::iterators::detail
190
176
 
191
- # include <boost/iterator/detail/config_undef.hpp>
177
+ #include <boost/iterator/detail/config_undef.hpp>
192
178
 
193
179
  #endif // FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
@@ -0,0 +1,53 @@
1
+ /*
2
+ * Distributed under the Boost Software License, Version 1.0.
3
+ * (See accompanying file LICENSE_1_0.txt or copy at
4
+ * https://www.boost.org/LICENSE_1_0.txt)
5
+ *
6
+ * Copyright (c) 2024 Georgiy Guminov
7
+ */
8
+ /*!
9
+ * \file iterator/detail/type_traits/conjunction.hpp
10
+ *
11
+ * This header contains definition of \c conjunction type trait.
12
+ */
13
+
14
+ #ifndef BOOST_ITERATOR_DETAIL_TYPE_TRAITS_CONJUNCTION_HPP_INCLUDED_
15
+ #define BOOST_ITERATOR_DETAIL_TYPE_TRAITS_CONJUNCTION_HPP_INCLUDED_
16
+
17
+ #include <type_traits>
18
+ #include <boost/config.hpp>
19
+
20
+ #ifdef BOOST_HAS_PRAGMA_ONCE
21
+ #pragma once
22
+ #endif
23
+
24
+ #if (defined(__cpp_lib_logical_traits) && (__cpp_lib_logical_traits >= 201510l)) || \
25
+ (defined(BOOST_MSSTL_VERSION) && (BOOST_MSSTL_VERSION >= 140) && (_MSC_FULL_VER >= 190023918) && (BOOST_CXX_VERSION >= 201703l))
26
+
27
+ namespace boost {
28
+ namespace iterators {
29
+ namespace detail {
30
+
31
+ using std::conjunction;
32
+
33
+ } // namespace detail
34
+ } // namespace iterator
35
+ } // namespace boost
36
+
37
+ #else
38
+
39
+ #include <boost/type_traits/conjunction.hpp>
40
+
41
+ namespace boost {
42
+ namespace iterators {
43
+ namespace detail {
44
+
45
+ using boost::conjunction;
46
+
47
+ } // namespace detail
48
+ } // namespace iterator
49
+ } // namespace boost
50
+
51
+ #endif
52
+
53
+ #endif // BOOST_ITERATOR_DETAIL_TYPE_TRAITS_CONJUNCTION_HPP_INCLUDED_
@@ -0,0 +1,53 @@
1
+ /*
2
+ * Distributed under the Boost Software License, Version 1.0.
3
+ * (See accompanying file LICENSE_1_0.txt or copy at
4
+ * https://www.boost.org/LICENSE_1_0.txt)
5
+ *
6
+ * Copyright (c) 2024 Georgiy Guminov
7
+ */
8
+ /*!
9
+ * \file iterator/detail/type_traits/disjunction.hpp
10
+ *
11
+ * This header contains definition of \c disjunction type trait.
12
+ */
13
+
14
+ #ifndef BOOST_ITERATOR_DETAIL_TYPE_TRAITS_DISJUNCTION_HPP_INCLUDED_
15
+ #define BOOST_ITERATOR_DETAIL_TYPE_TRAITS_DISJUNCTION_HPP_INCLUDED_
16
+
17
+ #include <type_traits>
18
+ #include <boost/config.hpp>
19
+
20
+ #ifdef BOOST_HAS_PRAGMA_ONCE
21
+ #pragma once
22
+ #endif
23
+
24
+ #if (defined(__cpp_lib_logical_traits) && (__cpp_lib_logical_traits >= 201510l)) || \
25
+ (defined(BOOST_MSSTL_VERSION) && (BOOST_MSSTL_VERSION >= 140) && (_MSC_FULL_VER >= 190023918) && (BOOST_CXX_VERSION >= 201703l))
26
+
27
+ namespace boost {
28
+ namespace iterators {
29
+ namespace detail {
30
+
31
+ using std::disjunction;
32
+
33
+ } // namespace detail
34
+ } // namespace iterator
35
+ } // namespace boost
36
+
37
+ #else
38
+
39
+ #include <boost/type_traits/disjunction.hpp>
40
+
41
+ namespace boost {
42
+ namespace iterators {
43
+ namespace detail {
44
+
45
+ using boost::disjunction;
46
+
47
+ } // namespace detail
48
+ } // namespace iterator
49
+ } // namespace boost
50
+
51
+ #endif
52
+
53
+ #endif // BOOST_ITERATOR_DETAIL_TYPE_TRAITS_DISJUNCTION_HPP_INCLUDED_
@@ -0,0 +1,53 @@
1
+ /*
2
+ * Distributed under the Boost Software License, Version 1.0.
3
+ * (See accompanying file LICENSE_1_0.txt or copy at
4
+ * https://www.boost.org/LICENSE_1_0.txt)
5
+ *
6
+ * Copyright (c) 2024 Georgiy Guminov
7
+ */
8
+ /*!
9
+ * \file iterator/detail/type_traits/negation.hpp
10
+ *
11
+ * This header contains definition of \c negation type trait.
12
+ */
13
+
14
+ #ifndef BOOST_ITERATOR_DETAIL_TYPE_TRAITS_NEGATION_HPP_INCLUDED_
15
+ #define BOOST_ITERATOR_DETAIL_TYPE_TRAITS_NEGATION_HPP_INCLUDED_
16
+
17
+ #include <type_traits>
18
+ #include <boost/config.hpp>
19
+
20
+ #ifdef BOOST_HAS_PRAGMA_ONCE
21
+ #pragma once
22
+ #endif
23
+
24
+ #if (defined(__cpp_lib_logical_traits) && (__cpp_lib_logical_traits >= 201510l)) || \
25
+ (defined(BOOST_MSSTL_VERSION) && (BOOST_MSSTL_VERSION >= 140) && (_MSC_FULL_VER >= 190023918) && (BOOST_CXX_VERSION >= 201703l))
26
+
27
+ namespace boost {
28
+ namespace iterators {
29
+ namespace detail {
30
+
31
+ using std::negation;
32
+
33
+ } // namespace detail
34
+ } // namespace iterator
35
+ } // namespace boost
36
+
37
+ #else
38
+
39
+ #include <boost/type_traits/negation.hpp>
40
+
41
+ namespace boost {
42
+ namespace iterators {
43
+ namespace detail {
44
+
45
+ using boost::negation;
46
+
47
+ } // namespace detail
48
+ } // namespace iterator
49
+ } // namespace boost
50
+
51
+ #endif
52
+
53
+ #endif // BOOST_ITERATOR_DETAIL_TYPE_TRAITS_NEGATION_HPP_INCLUDED_
@@ -0,0 +1,54 @@
1
+ /*
2
+ * Distributed under the Boost Software License, Version 1.0.
3
+ * (See accompanying file LICENSE_1_0.txt or copy at
4
+ * https://www.boost.org/LICENSE_1_0.txt)
5
+ *
6
+ * Copyright (c) 2025 Andrey Semashev
7
+ */
8
+ /*!
9
+ * \file iterator/detail/type_traits/type_identity.hpp
10
+ *
11
+ * This header contains definition of \c negation type trait.
12
+ */
13
+
14
+ #ifndef BOOST_ITERATOR_DETAIL_TYPE_TRAITS_TYPE_IDENTITY_HPP_INCLUDED_
15
+ #define BOOST_ITERATOR_DETAIL_TYPE_TRAITS_TYPE_IDENTITY_HPP_INCLUDED_
16
+
17
+ #include <type_traits>
18
+ #include <boost/config.hpp>
19
+
20
+ #ifdef BOOST_HAS_PRAGMA_ONCE
21
+ #pragma once
22
+ #endif
23
+
24
+ #if (defined(__cpp_lib_type_identity) && (__cpp_lib_type_identity >= 201806l)) || \
25
+ /* Note: MSVC 19.21 does not define _MSVC_LANG to 202002 in c++latest (C++20) mode but to a value larger than 201703 */ \
26
+ (defined(BOOST_MSSTL_VERSION) && (BOOST_MSSTL_VERSION >= 142) && (_MSC_VER >= 1921) && (BOOST_CXX_VERSION > 201703l))
27
+
28
+ namespace boost {
29
+ namespace iterators {
30
+ namespace detail {
31
+
32
+ using std::type_identity;
33
+
34
+ } // namespace detail
35
+ } // namespace iterator
36
+ } // namespace boost
37
+
38
+ #else
39
+
40
+ #include <boost/type_traits/type_identity.hpp>
41
+
42
+ namespace boost {
43
+ namespace iterators {
44
+ namespace detail {
45
+
46
+ using boost::type_identity;
47
+
48
+ } // namespace detail
49
+ } // namespace iterator
50
+ } // namespace boost
51
+
52
+ #endif
53
+
54
+ #endif // BOOST_ITERATOR_DETAIL_TYPE_TRAITS_TYPE_IDENTITY_HPP_INCLUDED_
@@ -13,48 +13,42 @@
13
13
 
14
14
  namespace boost {
15
15
  namespace iterators {
16
+ namespace detail {
17
+
18
+ template< typename SinglePassIterator >
19
+ inline BOOST_CXX14_CONSTEXPR typename iterator_difference< SinglePassIterator >::type
20
+ distance_impl(SinglePassIterator first, SinglePassIterator last, single_pass_traversal_tag)
21
+ {
22
+ typename iterator_difference< SinglePassIterator >::type n = 0;
23
+ while (first != last)
24
+ {
25
+ ++first;
26
+ ++n;
27
+ }
28
+ return n;
29
+ }
16
30
 
17
- namespace detail {
18
- template <typename SinglePassIterator>
19
- inline BOOST_CXX14_CONSTEXPR typename iterator_difference<SinglePassIterator>::type
20
- distance_impl(
21
- SinglePassIterator first
22
- , SinglePassIterator last
23
- , single_pass_traversal_tag
24
- )
25
- {
26
- typename iterator_difference<SinglePassIterator>::type n = 0;
27
- while (first != last) {
28
- ++first;
29
- ++n;
30
- }
31
- return n;
32
- }
31
+ template< typename RandomAccessIterator >
32
+ inline BOOST_CXX14_CONSTEXPR typename iterator_difference< RandomAccessIterator >::type
33
+ distance_impl(RandomAccessIterator first, RandomAccessIterator last, random_access_traversal_tag)
34
+ {
35
+ return last - first;
36
+ }
33
37
 
34
- template <typename RandomAccessIterator>
35
- inline BOOST_CXX14_CONSTEXPR typename iterator_difference<RandomAccessIterator>::type
36
- distance_impl(
37
- RandomAccessIterator first
38
- , RandomAccessIterator last
39
- , random_access_traversal_tag
40
- )
41
- {
42
- return last - first;
43
- }
44
- }
38
+ } // namespace detail
45
39
 
46
- namespace distance_adl_barrier {
47
- template <typename SinglePassIterator>
48
- inline BOOST_CXX14_CONSTEXPR typename iterator_difference<SinglePassIterator>::type
49
- distance(SinglePassIterator first, SinglePassIterator last)
50
- {
51
- return detail::distance_impl(
52
- first, last, typename iterator_traversal<SinglePassIterator>::type()
53
- );
54
- }
55
- }
40
+ namespace distance_adl_barrier {
41
+
42
+ template< typename SinglePassIterator >
43
+ inline BOOST_CXX14_CONSTEXPR typename iterator_difference< SinglePassIterator >::type
44
+ distance(SinglePassIterator first, SinglePassIterator last)
45
+ {
46
+ return detail::distance_impl(first, last, typename iterator_traversal< SinglePassIterator >::type());
47
+ }
48
+
49
+ } // namespace distance_adl_barrier
56
50
 
57
- using namespace distance_adl_barrier;
51
+ using namespace distance_adl_barrier;
58
52
 
59
53
  } // namespace iterators
60
54
 
@@ -0,0 +1,84 @@
1
+ /*
2
+ * Distributed under the Boost Software License, Version 1.0.
3
+ * (See accompanying file LICENSE_1_0.txt or copy at
4
+ * https://www.boost.org/LICENSE_1_0.txt)
5
+ *
6
+ * Copyright (c) 2025 Andrey Semashev
7
+ */
8
+
9
+ #ifndef BOOST_ITERATOR_ENABLE_IF_CONVERTIBLE_HPP_INCLUDED_
10
+ #define BOOST_ITERATOR_ENABLE_IF_CONVERTIBLE_HPP_INCLUDED_
11
+
12
+ #include <type_traits>
13
+
14
+ namespace boost {
15
+ namespace iterators {
16
+ namespace detail {
17
+
18
+ //
19
+ // Result type used in enable_if_convertible meta function.
20
+ // This can be an incomplete type, as only pointers to
21
+ // enable_if_convertible< ... >::type are used.
22
+ // We could have used void for this, but conversion to
23
+ // void* is just too easy.
24
+ //
25
+ struct enable_type;
26
+
27
+ } // namespace detail
28
+
29
+ //
30
+ // enable_if for use in adapted iterators constructors.
31
+ //
32
+ // In order to provide interoperability between adapted constant and
33
+ // mutable iterators, adapted iterators will usually provide templated
34
+ // conversion constructors of the following form
35
+ //
36
+ // template <class BaseIterator>
37
+ // class adapted_iterator :
38
+ // public iterator_adaptor< adapted_iterator<Iterator>, Iterator >
39
+ // {
40
+ // public:
41
+ //
42
+ // ...
43
+ //
44
+ // template <class OtherIterator>
45
+ // adapted_iterator(
46
+ // OtherIterator const& it
47
+ // , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0);
48
+ //
49
+ // ...
50
+ // };
51
+ //
52
+ // enable_if_convertible is used to remove those overloads from the overload
53
+ // set that cannot be instantiated. For all practical purposes only overloads
54
+ // for constant/mutable interaction will remain. This has the advantage that
55
+ // meta functions like boost::is_convertible do not return false positives,
56
+ // as they can only look at the signature of the conversion constructor
57
+ // and not at the actual instantiation.
58
+ //
59
+ // enable_if_interoperable can be safely used in user code. It falls back to
60
+ // always enabled for compilers that don't support enable_if or is_convertible.
61
+ // There is no need for compiler specific workarounds in user code.
62
+ //
63
+ // The operators implementation relies on boost::is_convertible not returning
64
+ // false positives for user/library defined iterator types. See comments
65
+ // on operator implementation for consequences.
66
+ //
67
+ template< typename From, typename To >
68
+ struct enable_if_convertible :
69
+ public std::enable_if<
70
+ std::is_convertible< From, To >::value,
71
+ boost::iterators::detail::enable_type
72
+ >
73
+ {};
74
+
75
+ template< typename From, typename To >
76
+ using enable_if_convertible_t = typename enable_if_convertible< From, To >::type;
77
+
78
+ } // namespace iterators
79
+
80
+ using iterators::enable_if_convertible;
81
+
82
+ } // namespace boost
83
+
84
+ #endif // BOOST_ITERATOR_ENABLE_IF_CONVERTIBLE_HPP_INCLUDED_