passenger 6.0.15 → 6.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +46 -2
  3. data/build/integration_tests.rb +6 -6
  4. data/build/ruby_tests.rb +1 -1
  5. data/build/test_basics.rb +0 -1
  6. data/src/agent/Core/Config.h +1 -1
  7. data/src/agent/Core/Controller/Config.h +1 -1
  8. data/src/agent/Core/SpawningKit/PipeWatcher.h +18 -3
  9. data/src/agent/Watchdog/Config.h +1 -1
  10. data/src/cxx_supportlib/Constants.h +1 -1
  11. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +1 -1
  12. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +1 -1
  13. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +344 -0
  14. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +686 -0
  15. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +56 -0
  16. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +81 -25
  17. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +68 -8
  18. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +46 -11
  19. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +4 -4
  20. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
  21. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +1 -1
  22. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
  23. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +4 -4
  24. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +2 -2
  25. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +2 -2
  26. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +3 -3
  27. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +2 -2
  28. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +3 -3
  29. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +4 -4
  30. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
  31. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +2 -2
  32. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
  33. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +2 -2
  34. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +13 -3
  35. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +14 -3
  36. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +13 -3
  37. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +30 -305
  38. data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +90 -0
  39. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +17 -18
  40. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +98 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +330 -0
  42. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +81 -15
  43. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +4 -4
  44. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +19 -11
  45. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +37 -0
  46. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +3 -1
  47. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +1 -1
  48. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +10 -2
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +14 -1
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +18 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +1 -2
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +7 -3
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +4 -14
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +22 -3
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +447 -142
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +57 -8
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +51 -6
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +5 -0
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +41 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +5 -0
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +13 -2
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +13 -2
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +4 -0
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +9 -2
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +11 -1
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +52 -8
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +13 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +5 -0
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +39 -6
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +5 -0
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +39 -6
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +5 -0
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +5 -0
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +5 -0
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +5 -0
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +5 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +5 -0
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +5 -0
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +5 -0
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +6 -9
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +3 -3
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +3 -3
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +70 -0
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +146 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +35 -5
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +13 -3
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +7 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +180 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +171 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +89 -66
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +66 -45
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +13 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +1134 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +130 -106
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +377 -3
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +168 -29
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +149 -203
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +68 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +256 -0
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +76 -80
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +40 -14
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +113 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +132 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +12 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +12 -3
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +12 -3
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +25 -6
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +25 -6
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +34 -45
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +28 -6
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +204 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +33 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +13 -3
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +21 -9
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +33 -1
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +12 -3
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +40 -9
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +27 -6
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +104 -24
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +12 -3
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +70 -15
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +25 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +38 -30
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +27 -6
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -13
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +2 -2
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +17 -18
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +3 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +13 -3
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +11 -7
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -13
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +23 -18
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +2 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +2 -2
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +2 -2
  143. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +4 -0
  144. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +4 -4
  147. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
  148. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -2
  149. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +3 -3
  150. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
  151. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +2 -2
  152. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +2 -2
  153. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
  154. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
  155. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +5 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +10 -3
  157. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +9 -3
  158. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +9 -3
  159. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +6 -0
  160. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +8 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +33 -0
  163. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +9 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +29 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +13 -13
  169. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +80 -95
  170. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +10 -0
  171. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
  172. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +738 -34
  173. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +38 -10
  174. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +1 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +2 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +3 -4
  177. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +1150 -1213
  178. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +104 -12
  180. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +1 -0
  181. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +11 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +31 -331
  183. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +173 -0
  185. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +133 -0
  186. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +461 -566
  187. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +24 -24
  188. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +91 -0
  189. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +38 -0
  190. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +73 -0
  191. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +39 -0
  192. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +32 -4
  193. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -0
  194. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -16
  195. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +46 -0
  196. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
  198. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
  199. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +12 -13
  200. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +2 -2
  201. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +2 -2
  202. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
  203. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
  204. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
  205. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
  206. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +2 -2
  209. data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
  211. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +159 -0
  214. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +9 -9
  216. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +45 -45
  217. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +8 -8
  218. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +37 -38
  219. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -0
  220. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +145 -90
  222. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +2 -0
  223. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +7 -7
  224. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +5 -5
  225. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +11 -9
  226. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +7 -7
  227. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +106 -25
  228. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +8 -5
  230. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +4 -2
  232. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +2 -1
  233. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +8 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +111 -0
  235. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
  237. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
  238. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
  239. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +6 -2
  240. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +11 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +1 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +7 -1
  243. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +2 -2
  244. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +10 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +38 -43
  246. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +52 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
  249. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
  250. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +22 -8
  251. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +37 -7
  252. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +1921 -0
  253. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +66 -82
  254. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +6 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +109 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
  257. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +45 -0
  258. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +732 -0
  259. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +49 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +586 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +49 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +166 -66
  263. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +145 -28
  264. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  265. data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +143 -261
  266. data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +763 -947
  267. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +1477 -1487
  268. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +1 -1
  269. data/src/ruby_native_extension/extconf.rb +1 -1
  270. data/src/ruby_supportlib/phusion_passenger/packaging.rb +1 -0
  271. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +3 -2
  272. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +1 -1
  273. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +5 -5
  274. data/src/ruby_supportlib/phusion_passenger.rb +5 -5
  275. metadata +36 -19
  276. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -19
  277. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +0 -54
  278. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +0 -20
  279. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -21
  280. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +0 -52
  281. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +0 -31
  282. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +0 -23
  283. data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +0 -91
  284. data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +0 -53
  285. data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +0 -26
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +0 -196
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +0 -709
  288. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
  289. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
  290. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
  291. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -361
  292. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
@@ -1,36 +1,36 @@
1
-
2
1
  // Copyright 2005-2009 Daniel James.
3
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
4
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
-
6
- // Based on Peter Dimov's proposal
7
- // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf
8
- // issue 6.18.
2
+ // Copyright 2021, 2022 Peter Dimov.
3
+ // Distributed under the Boost Software License, Version 1.0.
4
+ // https://www.boost.org/LICENSE_1_0.txt
9
5
 
10
- #if !defined(BOOST_FUNCTIONAL_HASH_FWD_HPP)
6
+ #ifndef BOOST_FUNCTIONAL_HASH_FWD_HPP
11
7
  #define BOOST_FUNCTIONAL_HASH_FWD_HPP
12
8
 
13
- #include <boost/config/workaround.hpp>
14
9
  #include <cstddef>
15
10
 
16
- #if defined(BOOST_HAS_PRAGMA_ONCE)
17
- #pragma once
18
- #endif
19
-
20
-
21
11
  namespace boost
22
12
  {
23
- template <class T> struct hash;
24
13
 
25
- template <class T> void hash_combine(std::size_t& seed, T const& v);
14
+ namespace container_hash
15
+ {
16
+
17
+ template<class T> struct is_range;
18
+ template<class T> struct is_contiguous_range;
19
+ template<class T> struct is_unordered_range;
20
+ template<class T> struct is_described_class;
21
+
22
+ } // namespace container_hash
23
+
24
+ template<class T> struct hash;
25
+
26
+ template<class T> void hash_combine( std::size_t& seed, T const& v );
27
+
28
+ template<class It> void hash_range( std::size_t&, It, It );
29
+ template<class It> std::size_t hash_range( It, It );
26
30
 
27
- template <class It> std::size_t hash_range(It, It);
28
- template <class It> void hash_range(std::size_t&, It, It);
31
+ template<class It> void hash_unordered_range( std::size_t&, It, It );
32
+ template<class It> std::size_t hash_unordered_range( It, It );
29
33
 
30
- #if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x551))
31
- template <class T> inline std::size_t hash_range(T*, T*);
32
- template <class T> inline void hash_range(std::size_t&, T*, T*);
33
- #endif
34
- }
34
+ } // namespace boost
35
35
 
36
- #endif
36
+ #endif // #ifndef BOOST_FUNCTIONAL_HASH_FWD_HPP
@@ -0,0 +1,91 @@
1
+ // Copyright 2017, 2018 Peter Dimov.
2
+ // Distributed under the Boost Software License, Version 1.0.
3
+ // https://www.boost.org/LICENSE_1_0.txt
4
+
5
+ #ifndef BOOST_HASH_IS_CONTIGUOUS_RANGE_HPP_INCLUDED
6
+ #define BOOST_HASH_IS_CONTIGUOUS_RANGE_HPP_INCLUDED
7
+
8
+ #include <boost/container_hash/is_range.hpp>
9
+ #include <boost/type_traits/integral_constant.hpp>
10
+ #include <boost/config.hpp>
11
+ #include <boost/config/workaround.hpp>
12
+
13
+ #if !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_SFINAE_EXPR) && !BOOST_WORKAROUND(BOOST_GCC, < 40700) && !BOOST_WORKAROUND(BOOST_MSVC, < 1910)
14
+
15
+ #include <boost/type_traits/is_integral.hpp>
16
+ #include <boost/type_traits/declval.hpp>
17
+ #include <boost/type_traits/is_same.hpp>
18
+ #include <iterator>
19
+
20
+ namespace boost
21
+ {
22
+ namespace hash_detail
23
+ {
24
+
25
+ template<class It, class T, class S>
26
+ integral_constant< bool, is_same<typename std::iterator_traits<It>::value_type, T>::value && is_integral<S>::value >
27
+ is_contiguous_range_check( It first, It last, T const*, T const*, S );
28
+
29
+ template<class T> decltype( is_contiguous_range_check( declval<T const&>().begin(), declval<T const&>().end(), declval<T const&>().data(), declval<T const&>().data() + declval<T const&>().size(), declval<T const&>().size() ) ) is_contiguous_range_( int );
30
+ template<class T> false_type is_contiguous_range_( ... );
31
+
32
+ template<class T> struct is_contiguous_range: decltype( hash_detail::is_contiguous_range_<T>( 0 ) )
33
+ {
34
+ };
35
+
36
+ } // namespace hash_detail
37
+
38
+ namespace container_hash
39
+ {
40
+
41
+ template<class T> struct is_contiguous_range: integral_constant< bool, is_range<T>::value && hash_detail::is_contiguous_range<T>::value >
42
+ {
43
+ };
44
+
45
+ } // namespace container_hash
46
+ } // namespace boost
47
+
48
+ #else // !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_SFINAE_EXPR)
49
+
50
+ #include <cstddef>
51
+ #include <vector>
52
+ #include <string>
53
+ #if !defined(BOOST_NO_CXX11_HDR_ARRAY)
54
+ #include <array>
55
+ #endif
56
+
57
+ namespace boost
58
+ {
59
+ namespace container_hash
60
+ {
61
+
62
+ template<class T> struct is_contiguous_range: false_type
63
+ {
64
+ };
65
+
66
+ template<class E, class T, class A> struct is_contiguous_range< std::basic_string<E, T, A> >: true_type
67
+ {
68
+ };
69
+
70
+ template<class E, class T, class A> struct is_contiguous_range< std::basic_string<E, T, A> const >: true_type
71
+ {
72
+ };
73
+
74
+ #if !defined(BOOST_NO_CXX11_HDR_ARRAY)
75
+
76
+ template<class T, std::size_t N> struct is_contiguous_range< std::array<T, N> >: true_type
77
+ {
78
+ };
79
+
80
+ template<class T, std::size_t N> struct is_contiguous_range< std::array<T, N> const >: true_type
81
+ {
82
+ };
83
+
84
+ #endif
85
+
86
+ } // namespace container_hash
87
+ } // namespace boost
88
+
89
+ #endif // !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_SFINAE_EXPR)
90
+
91
+ #endif // #ifndef BOOST_HASH_IS_CONTIGUOUS_RANGE_HPP_INCLUDED
@@ -0,0 +1,38 @@
1
+ // Copyright 2022 Peter Dimov.
2
+ // Distributed under the Boost Software License, Version 1.0.
3
+ // https://www.boost.org/LICENSE_1_0.txt
4
+
5
+ #ifndef BOOST_HASH_IS_DESCRIBED_CLASS_HPP_INCLUDED
6
+ #define BOOST_HASH_IS_DESCRIBED_CLASS_HPP_INCLUDED
7
+
8
+ #include <boost/type_traits/integral_constant.hpp>
9
+ #include <boost/type_traits/is_union.hpp>
10
+ #include <boost/describe/bases.hpp>
11
+ #include <boost/describe/members.hpp>
12
+
13
+ namespace boost
14
+ {
15
+ namespace container_hash
16
+ {
17
+
18
+ #if defined(BOOST_DESCRIBE_CXX11)
19
+
20
+ template<class T> struct is_described_class: boost::integral_constant<bool,
21
+ describe::has_describe_bases<T>::value &&
22
+ describe::has_describe_members<T>::value &&
23
+ !boost::is_union<T>::value>
24
+ {
25
+ };
26
+
27
+ #else
28
+
29
+ template<class T> struct is_described_class: boost::false_type
30
+ {
31
+ };
32
+
33
+ #endif
34
+
35
+ } // namespace container_hash
36
+ } // namespace boost
37
+
38
+ #endif // #ifndef BOOST_HASH_IS_DESCRIBED_CLASS_HPP_INCLUDED
@@ -0,0 +1,73 @@
1
+ // Copyright 2017 Peter Dimov.
2
+ // Distributed under the Boost Software License, Version 1.0.
3
+ // https://www.boost.org/LICENSE_1_0.txt
4
+
5
+ #ifndef BOOST_HASH_IS_RANGE_HPP_INCLUDED
6
+ #define BOOST_HASH_IS_RANGE_HPP_INCLUDED
7
+
8
+ #include <boost/type_traits/integral_constant.hpp>
9
+ #include <boost/type_traits/is_integral.hpp>
10
+ #include <boost/type_traits/declval.hpp>
11
+ #include <boost/type_traits/is_same.hpp>
12
+ #include <boost/type_traits/remove_cv.hpp>
13
+ #include <boost/config.hpp>
14
+ #include <boost/config/workaround.hpp>
15
+ #include <iterator>
16
+
17
+ namespace boost
18
+ {
19
+ #if !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_SFINAE_EXPR) && !BOOST_WORKAROUND(BOOST_GCC, < 40700)
20
+
21
+ namespace hash_detail
22
+ {
23
+
24
+ template<class T, class It>
25
+ integral_constant< bool, !is_same<typename remove_cv<T>::type, typename std::iterator_traits<It>::value_type>::value >
26
+ is_range_check( It first, It last );
27
+
28
+ template<class T> decltype( is_range_check<T>( declval<T const&>().begin(), declval<T const&>().end() ) ) is_range_( int );
29
+ template<class T> false_type is_range_( ... );
30
+
31
+ } // namespace hash_detail
32
+
33
+ namespace container_hash
34
+ {
35
+
36
+ template<class T> struct is_range: decltype( hash_detail::is_range_<T>( 0 ) )
37
+ {
38
+ };
39
+
40
+ } // namespace container_hash
41
+
42
+ #else
43
+
44
+ namespace hash_detail
45
+ {
46
+
47
+ template<class T, class E = true_type> struct is_range_: false_type
48
+ {
49
+ };
50
+
51
+ template<class T> struct is_range_< T, integral_constant< bool,
52
+ is_same<typename T::value_type, typename std::iterator_traits<typename T::const_iterator>::value_type>::value &&
53
+ is_integral<typename T::size_type>::value
54
+ > >: true_type
55
+ {
56
+ };
57
+
58
+ } // namespace hash_detail
59
+
60
+ namespace container_hash
61
+ {
62
+
63
+ template<class T> struct is_range: hash_detail::is_range_<T>
64
+ {
65
+ };
66
+
67
+ } // namespace container_hash
68
+
69
+ #endif // !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_SFINAE_EXPR)
70
+
71
+ } // namespace boost
72
+
73
+ #endif // #ifndef BOOST_HASH_IS_RANGE_HPP_INCLUDED
@@ -0,0 +1,39 @@
1
+ // Copyright 2017 Peter Dimov.
2
+ // Distributed under the Boost Software License, Version 1.0.
3
+ // https://www.boost.org/LICENSE_1_0.txt
4
+
5
+ #ifndef BOOST_HASH_IS_UNORDERED_RANGE_HPP_INCLUDED
6
+ #define BOOST_HASH_IS_UNORDERED_RANGE_HPP_INCLUDED
7
+
8
+ #include <boost/container_hash/is_range.hpp>
9
+ #include <boost/type_traits/integral_constant.hpp>
10
+ #include <boost/type_traits/is_same.hpp>
11
+
12
+ namespace boost
13
+ {
14
+ namespace hash_detail
15
+ {
16
+
17
+ template<class T, class E = true_type> struct has_hasher_: false_type
18
+ {
19
+ };
20
+
21
+ template<class T> struct has_hasher_< T, integral_constant< bool,
22
+ is_same<typename T::hasher, typename T::hasher>::value
23
+ > >: true_type
24
+ {
25
+ };
26
+
27
+ } // namespace hash_detail
28
+
29
+ namespace container_hash
30
+ {
31
+
32
+ template<class T> struct is_unordered_range: integral_constant< bool, is_range<T>::value && hash_detail::has_hasher_<T>::value >
33
+ {
34
+ };
35
+
36
+ } // namespace container_hash
37
+ } // namespace boost
38
+
39
+ #endif // #ifndef BOOST_HASH_IS_UNORDERED_RANGE_HPP_INCLUDED
@@ -92,6 +92,8 @@ BOOST_CONSTEXPR inline int countl_impl( boost::ulong_long_type x ) BOOST_NOEXCEP
92
92
  template<class T>
93
93
  BOOST_CONSTEXPR int countl_zero( T x ) BOOST_NOEXCEPT
94
94
  {
95
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
96
+
95
97
  return boost::core::detail::countl_impl( x );
96
98
  }
97
99
 
@@ -169,6 +171,8 @@ inline int countl_impl( boost::uint16_t x ) BOOST_NOEXCEPT
169
171
  template<class T>
170
172
  int countl_zero( T x ) BOOST_NOEXCEPT
171
173
  {
174
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
175
+
172
176
  BOOST_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) );
173
177
 
174
178
  BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint8_t) )
@@ -194,6 +198,8 @@ int countl_zero( T x ) BOOST_NOEXCEPT
194
198
  template<class T>
195
199
  BOOST_CONSTEXPR int countl_one( T x ) BOOST_NOEXCEPT
196
200
  {
201
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
202
+
197
203
  return boost::core::countl_zero( static_cast<T>( ~x ) );
198
204
  }
199
205
 
@@ -234,6 +240,8 @@ BOOST_CONSTEXPR inline int countr_impl( boost::ulong_long_type x ) BOOST_NOEXCEP
234
240
  template<class T>
235
241
  BOOST_CONSTEXPR int countr_zero( T x ) BOOST_NOEXCEPT
236
242
  {
243
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
244
+
237
245
  return boost::core::detail::countr_impl( x );
238
246
  }
239
247
 
@@ -304,6 +312,8 @@ inline int countr_impl( boost::uint16_t x ) BOOST_NOEXCEPT
304
312
  template<class T>
305
313
  int countr_zero( T x ) BOOST_NOEXCEPT
306
314
  {
315
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
316
+
307
317
  BOOST_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) );
308
318
 
309
319
  BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint8_t) )
@@ -329,6 +339,8 @@ int countr_zero( T x ) BOOST_NOEXCEPT
329
339
  template<class T>
330
340
  BOOST_CONSTEXPR int countr_one( T x ) BOOST_NOEXCEPT
331
341
  {
342
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
343
+
332
344
  return boost::core::countr_zero( static_cast<T>( ~x ) );
333
345
  }
334
346
 
@@ -377,6 +389,8 @@ BOOST_CORE_POPCOUNT_CONSTEXPR inline int popcount_impl( boost::ulong_long_type x
377
389
  template<class T>
378
390
  BOOST_CONSTEXPR int popcount( T x ) BOOST_NOEXCEPT
379
391
  {
392
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
393
+
380
394
  return boost::core::detail::popcount_impl( x );
381
395
  }
382
396
 
@@ -408,6 +422,8 @@ BOOST_CXX14_CONSTEXPR inline int popcount_impl( boost::uint64_t x ) BOOST_NOEXCE
408
422
  template<class T>
409
423
  BOOST_CXX14_CONSTEXPR int popcount( T x ) BOOST_NOEXCEPT
410
424
  {
425
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
426
+
411
427
  BOOST_STATIC_ASSERT( sizeof(T) <= sizeof(boost::uint64_t) );
412
428
 
413
429
  BOOST_IF_CONSTEXPR ( sizeof(T) <= sizeof(boost::uint32_t) )
@@ -427,6 +443,8 @@ BOOST_CXX14_CONSTEXPR int popcount( T x ) BOOST_NOEXCEPT
427
443
  template<class T>
428
444
  BOOST_CXX14_CONSTEXPR T rotl( T x, int s ) BOOST_NOEXCEPT
429
445
  {
446
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
447
+
430
448
  unsigned const mask = std::numeric_limits<T>::digits - 1;
431
449
  return x << (s & mask) | x >> ((-s) & mask);
432
450
  }
@@ -434,6 +452,8 @@ BOOST_CXX14_CONSTEXPR T rotl( T x, int s ) BOOST_NOEXCEPT
434
452
  template<class T>
435
453
  BOOST_CXX14_CONSTEXPR T rotr( T x, int s ) BOOST_NOEXCEPT
436
454
  {
455
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
456
+
437
457
  unsigned const mask = std::numeric_limits<T>::digits - 1;
438
458
  return x >> (s & mask) | x << ((-s) & mask);
439
459
  }
@@ -443,21 +463,27 @@ BOOST_CXX14_CONSTEXPR T rotr( T x, int s ) BOOST_NOEXCEPT
443
463
  template<class T>
444
464
  BOOST_CONSTEXPR bool has_single_bit( T x ) BOOST_NOEXCEPT
445
465
  {
466
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
467
+
446
468
  return x != 0 && ( x & ( x - 1 ) ) == 0;
447
469
  }
448
470
 
449
- // bit_width should return int, https://cplusplus.github.io/LWG/issue3656
471
+ // bit_width returns `int` now, https://cplusplus.github.io/LWG/issue3656
472
+ // has been applied to C++20 as a DR
450
473
 
451
474
  template<class T>
452
- BOOST_CONSTEXPR T bit_width( T x ) BOOST_NOEXCEPT
475
+ BOOST_CONSTEXPR int bit_width( T x ) BOOST_NOEXCEPT
453
476
  {
454
- return static_cast<T>(
455
- std::numeric_limits<T>::digits - boost::core::countl_zero( x ) );
477
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
478
+
479
+ return std::numeric_limits<T>::digits - boost::core::countl_zero( x );
456
480
  }
457
481
 
458
482
  template<class T>
459
483
  BOOST_CONSTEXPR T bit_floor( T x ) BOOST_NOEXCEPT
460
484
  {
485
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
486
+
461
487
  return x == 0? 0: T(1) << ( boost::core::bit_width( x ) - 1 );
462
488
  }
463
489
 
@@ -510,6 +536,8 @@ BOOST_CXX14_CONSTEXPR inline boost::uint64_t bit_ceil_impl( boost::uint64_t x )
510
536
  template<class T>
511
537
  BOOST_CXX14_CONSTEXPR T bit_ceil( T x ) BOOST_NOEXCEPT
512
538
  {
539
+ BOOST_STATIC_ASSERT( std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed );
540
+
513
541
  BOOST_STATIC_ASSERT( sizeof(T) <= sizeof(boost::uint64_t) );
514
542
 
515
543
  BOOST_IF_CONSTEXPR ( sizeof(T) <= sizeof(boost::uint32_t) )
@@ -403,6 +403,22 @@ public:
403
403
  {
404
404
  }
405
405
 
406
+ #if !defined(BOOST_NO_CXX11_NULLPTR)
407
+ # if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
408
+
409
+ basic_string_view( std::nullptr_t ) = delete;
410
+
411
+ # else
412
+
413
+ private:
414
+
415
+ basic_string_view( std::nullptr_t );
416
+
417
+ public:
418
+
419
+ # endif
420
+ #endif
421
+
406
422
  // BOOST_CONSTEXPR basic_string_view& operator=( basic_string_view const& ) BOOST_NOEXCEPT & = default;
407
423
 
408
424
  // conversions
@@ -56,37 +56,37 @@ public:
56
56
  #if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS)
57
57
  empty_value() = default;
58
58
  #else
59
- empty_value() { }
59
+ BOOST_CONSTEXPR empty_value() { }
60
60
  #endif
61
61
 
62
- empty_value(boost::empty_init_t)
62
+ BOOST_CONSTEXPR empty_value(boost::empty_init_t)
63
63
  : value_() { }
64
64
 
65
65
  #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
66
66
  #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
67
67
  template<class U, class... Args>
68
- empty_value(boost::empty_init_t, U&& value, Args&&... args)
68
+ BOOST_CONSTEXPR empty_value(boost::empty_init_t, U&& value, Args&&... args)
69
69
  : value_(std::forward<U>(value), std::forward<Args>(args)...) { }
70
70
  #else
71
71
  template<class U>
72
- empty_value(boost::empty_init_t, U&& value)
72
+ BOOST_CONSTEXPR empty_value(boost::empty_init_t, U&& value)
73
73
  : value_(std::forward<U>(value)) { }
74
74
  #endif
75
75
  #else
76
76
  template<class U>
77
- empty_value(boost::empty_init_t, const U& value)
77
+ BOOST_CONSTEXPR empty_value(boost::empty_init_t, const U& value)
78
78
  : value_(value) { }
79
79
 
80
80
  template<class U>
81
- empty_value(boost::empty_init_t, U& value)
81
+ BOOST_CONSTEXPR empty_value(boost::empty_init_t, U& value)
82
82
  : value_(value) { }
83
83
  #endif
84
84
 
85
- const T& get() const BOOST_NOEXCEPT {
85
+ BOOST_CONSTEXPR const T& get() const BOOST_NOEXCEPT {
86
86
  return value_;
87
87
  }
88
88
 
89
- T& get() BOOST_NOEXCEPT {
89
+ BOOST_CXX14_CONSTEXPR T& get() BOOST_NOEXCEPT {
90
90
  return value_;
91
91
  }
92
92
 
@@ -104,37 +104,37 @@ public:
104
104
  #if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS)
105
105
  empty_value() = default;
106
106
  #else
107
- empty_value() { }
107
+ BOOST_CONSTEXPR empty_value() { }
108
108
  #endif
109
109
 
110
- empty_value(boost::empty_init_t)
110
+ BOOST_CONSTEXPR empty_value(boost::empty_init_t)
111
111
  : T() { }
112
112
 
113
113
  #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
114
114
  #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
115
115
  template<class U, class... Args>
116
- empty_value(boost::empty_init_t, U&& value, Args&&... args)
116
+ BOOST_CONSTEXPR empty_value(boost::empty_init_t, U&& value, Args&&... args)
117
117
  : T(std::forward<U>(value), std::forward<Args>(args)...) { }
118
118
  #else
119
119
  template<class U>
120
- empty_value(boost::empty_init_t, U&& value)
120
+ BOOST_CONSTEXPR empty_value(boost::empty_init_t, U&& value)
121
121
  : T(std::forward<U>(value)) { }
122
122
  #endif
123
123
  #else
124
124
  template<class U>
125
- empty_value(boost::empty_init_t, const U& value)
125
+ BOOST_CONSTEXPR empty_value(boost::empty_init_t, const U& value)
126
126
  : T(value) { }
127
127
 
128
128
  template<class U>
129
- empty_value(boost::empty_init_t, U& value)
129
+ BOOST_CONSTEXPR empty_value(boost::empty_init_t, U& value)
130
130
  : T(value) { }
131
131
  #endif
132
132
 
133
- const T& get() const BOOST_NOEXCEPT {
133
+ BOOST_CONSTEXPR const T& get() const BOOST_NOEXCEPT {
134
134
  return *this;
135
135
  }
136
136
 
137
- T& get() BOOST_NOEXCEPT {
137
+ BOOST_CXX14_CONSTEXPR T& get() BOOST_NOEXCEPT {
138
138
  return *this;
139
139
  }
140
140
  };
@@ -0,0 +1,46 @@
1
+ /*
2
+ * Copyright Andrey Semashev 2022.
3
+ * Distributed under the Boost Software License, Version 1.0.
4
+ * (See accompanying file LICENSE_1_0.txt or copy at
5
+ * http://www.boost.org/LICENSE_1_0.txt)
6
+ */
7
+ /*!
8
+ * \file fclose_deleter.hpp
9
+ * \author Andrey Semashev
10
+ * \date 21.09.2022
11
+ *
12
+ * This header contains an \c fclose_deleter implementation. This is a deleter
13
+ * function object that invokes <tt>std::fclose</tt> on the passed pointer to
14
+ * a <tt>std::FILE</tt> structure.
15
+ */
16
+
17
+ #ifndef BOOST_CORE_FCLOSE_DELETER_HPP
18
+ #define BOOST_CORE_FCLOSE_DELETER_HPP
19
+
20
+ #include <cstdio>
21
+ #include <boost/config.hpp>
22
+
23
+ #ifdef BOOST_HAS_PRAGMA_ONCE
24
+ #pragma once
25
+ #endif
26
+
27
+ namespace boost {
28
+
29
+ //! A function object that closes a file
30
+ struct fclose_deleter
31
+ {
32
+ //! Function object result type
33
+ typedef void result_type;
34
+ /*!
35
+ * Closes the file handle
36
+ */
37
+ void operator() (std::FILE* p) const BOOST_NOEXCEPT
38
+ {
39
+ if (BOOST_LIKELY(!!p))
40
+ std::fclose(p);
41
+ }
42
+ };
43
+
44
+ } // namespace boost
45
+
46
+ #endif // BOOST_CORE_FCLOSE_DELETER_HPP
@@ -21,7 +21,7 @@ namespace date_time {
21
21
  /*!
22
22
  The date template represents an interface shell for a date class
23
23
  that is based on a year-month-day system such as the gregorian
24
- or iso systems. It provides basic operations to enable calculation
24
+ or ISO 8601 systems. It provides basic operations to enable calculation
25
25
  and comparisons.
26
26
 
27
27
  <b>Theory</b>
@@ -65,7 +65,7 @@ namespace gregorian {
65
65
  std::basic_string<charT> s(date_time::date_formatter<date,date_time::iso_format<charT>,charT>::date_to_string(d.begin()));
66
66
  return s + sep + date_time::date_formatter<date,date_time::iso_format<charT>,charT>::date_to_string(d.last());
67
67
  }
68
- //! Date period to iso standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231
68
+ //! Date period to ISO 8601 standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231
69
69
  /*!\ingroup date_format
70
70
  */
71
71
  inline std::string to_iso_string(const date_period& d) {
@@ -78,7 +78,7 @@ namespace gregorian {
78
78
  inline std::basic_string<charT> to_iso_extended_string_type(const date& d) {
79
79
  return date_time::date_formatter<date,date_time::iso_extended_format<charT>,charT>::date_to_string(d);
80
80
  }
81
- //! Convert to iso extended format string CCYY-MM-DD. Example 2002-12-31
81
+ //! Convert to ISO 8601 extended format string CCYY-MM-DD. Example 2002-12-31
82
82
  /*!\ingroup date_format
83
83
  */
84
84
  inline std::string to_iso_extended_string(const date& d) {
@@ -90,7 +90,7 @@ namespace gregorian {
90
90
  inline std::basic_string<charT> to_iso_string_type(const date& d) {
91
91
  return date_time::date_formatter<date,date_time::iso_format<charT>,charT>::date_to_string(d);
92
92
  }
93
- //! Convert to iso standard string YYYYMMDD. Example: 20021231
93
+ //! Convert to ISO 8601 standard string YYYYMMDD. Example: 20021231
94
94
  /*!\ingroup date_format
95
95
  */
96
96
  inline std::string to_iso_string(const date& d) {
@@ -35,7 +35,7 @@ namespace gregorian {
35
35
  return std::string("[" + d1 + "/" + d2 + "]");
36
36
  }
37
37
 
38
- //! Date period to iso standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231
38
+ //! Date period to ISO 8601 standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231
39
39
  /*!\ingroup date_format
40
40
  */
41
41
  inline std::string to_iso_string(const date_period& d) {
@@ -44,14 +44,14 @@ namespace gregorian {
44
44
  }
45
45
 
46
46
 
47
- //! Convert to iso extended format string CCYY-MM-DD. Example 2002-12-31
47
+ //! Convert to ISO 8601 extended format string CCYY-MM-DD. Example 2002-12-31
48
48
  /*!\ingroup date_format
49
49
  */
50
50
  inline std::string to_iso_extended_string(const date& d) {
51
51
  return date_time::date_formatter<date,date_time::iso_extended_format<char> >::date_to_string(d);
52
52
  }
53
53
 
54
- //! Convert to iso standard string YYYYMMDD. Example: 20021231
54
+ //! Convert to ISO 8601 standard string YYYYMMDD. Example: 20021231
55
55
  /*!\ingroup date_format
56
56
  */
57
57
  inline std::string to_iso_string(const date& d) {