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
@@ -124,6 +124,40 @@ public:
124
124
  }
125
125
  #endif // defined(GENERATING_DOCUMENTATION)
126
126
 
127
+ /// Construct to point to the same target as another any_executor.
128
+ #if defined(GENERATING_DOCUMENTATION)
129
+ template <class... OtherSupportableProperties>
130
+ any_io_executor(std::nothrow_t,
131
+ execution::any_executor<OtherSupportableProperties...> e);
132
+ #else // defined(GENERATING_DOCUMENTATION)
133
+ template <typename OtherAnyExecutor>
134
+ any_io_executor(std::nothrow_t, OtherAnyExecutor e,
135
+ typename constraint<
136
+ conditional<
137
+ !is_same<OtherAnyExecutor, any_io_executor>::value
138
+ && is_base_of<execution::detail::any_executor_base,
139
+ OtherAnyExecutor>::value,
140
+ typename execution::detail::supportable_properties<
141
+ 0, supportable_properties_type>::template
142
+ is_valid_target<OtherAnyExecutor>,
143
+ false_type
144
+ >::type::value
145
+ >::type = 0) BOOST_ASIO_NOEXCEPT
146
+ : base_type(std::nothrow, BOOST_ASIO_MOVE_CAST(OtherAnyExecutor)(e))
147
+ {
148
+ }
149
+ #endif // defined(GENERATING_DOCUMENTATION)
150
+
151
+ /// Construct to point to the same target as another any_executor.
152
+ BOOST_ASIO_DECL any_io_executor(std::nothrow_t,
153
+ const any_io_executor& e) BOOST_ASIO_NOEXCEPT;
154
+
155
+ #if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
156
+ /// Construct to point to the same target as another any_executor.
157
+ BOOST_ASIO_DECL any_io_executor(std::nothrow_t,
158
+ any_io_executor&& e) BOOST_ASIO_NOEXCEPT;
159
+ #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
160
+
127
161
  /// Construct a polymorphic wrapper for the specified executor.
128
162
  #if defined(GENERATING_DOCUMENTATION)
129
163
  template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
@@ -146,6 +180,28 @@ public:
146
180
  }
147
181
  #endif // defined(GENERATING_DOCUMENTATION)
148
182
 
183
+ /// Construct a polymorphic wrapper for the specified executor.
184
+ #if defined(GENERATING_DOCUMENTATION)
185
+ template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
186
+ any_io_executor(std::nothrow_t, Executor e);
187
+ #else // defined(GENERATING_DOCUMENTATION)
188
+ template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
189
+ any_io_executor(std::nothrow_t, Executor e,
190
+ typename constraint<
191
+ conditional<
192
+ !is_same<Executor, any_io_executor>::value
193
+ && !is_base_of<execution::detail::any_executor_base,
194
+ Executor>::value,
195
+ execution::detail::is_valid_target_executor<
196
+ Executor, supportable_properties_type>,
197
+ false_type
198
+ >::type::value
199
+ >::type = 0) BOOST_ASIO_NOEXCEPT
200
+ : base_type(std::nothrow, BOOST_ASIO_MOVE_CAST(Executor)(e))
201
+ {
202
+ }
203
+ #endif // defined(GENERATING_DOCUMENTATION)
204
+
149
205
  /// Assignment operator.
150
206
  BOOST_ASIO_DECL any_io_executor& operator=(
151
207
  const any_io_executor& e) BOOST_ASIO_NOEXCEPT;
@@ -43,37 +43,53 @@ struct has_allocator_type<T,
43
43
  {
44
44
  };
45
45
 
46
- template <typename T, typename E, typename = void, typename = void>
46
+ template <typename T, typename A, typename = void, typename = void>
47
47
  struct associated_allocator_impl
48
48
  {
49
- typedef E type;
49
+ typedef void asio_associated_allocator_is_unspecialised;
50
50
 
51
- static type get(const T&, const E& e) BOOST_ASIO_NOEXCEPT
51
+ typedef A type;
52
+
53
+ static type get(const T&) BOOST_ASIO_NOEXCEPT
54
+ {
55
+ return type();
56
+ }
57
+
58
+ static const type& get(const T&, const A& a) BOOST_ASIO_NOEXCEPT
52
59
  {
53
- return e;
60
+ return a;
54
61
  }
55
62
  };
56
63
 
57
- template <typename T, typename E>
58
- struct associated_allocator_impl<T, E,
64
+ template <typename T, typename A>
65
+ struct associated_allocator_impl<T, A,
59
66
  typename void_type<typename T::allocator_type>::type>
60
67
  {
61
68
  typedef typename T::allocator_type type;
62
69
 
63
- static type get(const T& t, const E&) BOOST_ASIO_NOEXCEPT
70
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(
71
+ const T& t) BOOST_ASIO_NOEXCEPT
72
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_allocator()))
73
+ {
74
+ return t.get_allocator();
75
+ }
76
+
77
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(
78
+ const T& t, const A&) BOOST_ASIO_NOEXCEPT
79
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_allocator()))
64
80
  {
65
81
  return t.get_allocator();
66
82
  }
67
83
  };
68
84
 
69
- template <typename T, typename E>
70
- struct associated_allocator_impl<T, E,
85
+ template <typename T, typename A>
86
+ struct associated_allocator_impl<T, A,
71
87
  typename enable_if<
72
88
  !has_allocator_type<T>::value
73
89
  >::type,
74
90
  typename void_type<
75
- typename associator<associated_allocator, T, E>::type
76
- >::type> : associator<associated_allocator, T, E>
91
+ typename associator<associated_allocator, T, A>::type
92
+ >::type> : associator<associated_allocator, T, A>
77
93
  {
78
94
  };
79
95
 
@@ -93,29 +109,32 @@ struct associated_allocator_impl<T, E,
93
109
  * Allocator requirements.
94
110
  *
95
111
  * @li Provide a noexcept static member function named @c get, callable as @c
96
- * get(t) and with return type @c type.
112
+ * get(t) and with return type @c type or a (possibly const) reference to @c
113
+ * type.
97
114
  *
98
115
  * @li Provide a noexcept static member function named @c get, callable as @c
99
- * get(t,a) and with return type @c type.
116
+ * get(t,a) and with return type @c type or a (possibly const) reference to @c
117
+ * type.
100
118
  */
101
119
  template <typename T, typename Allocator = std::allocator<void> >
102
120
  struct associated_allocator
121
+ #if !defined(GENERATING_DOCUMENTATION)
122
+ : detail::associated_allocator_impl<T, Allocator>
123
+ #endif // !defined(GENERATING_DOCUMENTATION)
103
124
  {
125
+ #if defined(GENERATING_DOCUMENTATION)
104
126
  /// If @c T has a nested type @c allocator_type, <tt>T::allocator_type</tt>.
105
127
  /// Otherwise @c Allocator.
106
- #if defined(GENERATING_DOCUMENTATION)
107
128
  typedef see_below type;
108
- #else // defined(GENERATING_DOCUMENTATION)
109
- typedef typename detail::associated_allocator_impl<T, Allocator>::type type;
110
- #endif // defined(GENERATING_DOCUMENTATION)
129
+
130
+ /// If @c T has a nested type @c allocator_type, returns
131
+ /// <tt>t.get_allocator()</tt>. Otherwise returns @c type().
132
+ static decltype(auto) get(const T& t) BOOST_ASIO_NOEXCEPT;
111
133
 
112
134
  /// If @c T has a nested type @c allocator_type, returns
113
135
  /// <tt>t.get_allocator()</tt>. Otherwise returns @c a.
114
- static type get(const T& t,
115
- const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
116
- {
117
- return detail::associated_allocator_impl<T, Allocator>::get(t, a);
118
- }
136
+ static decltype(auto) get(const T& t, const Allocator& a) BOOST_ASIO_NOEXCEPT;
137
+ #endif // defined(GENERATING_DOCUMENTATION)
119
138
  };
120
139
 
121
140
  /// Helper function to obtain an object's associated allocator.
@@ -134,8 +153,11 @@ get_associated_allocator(const T& t) BOOST_ASIO_NOEXCEPT
134
153
  * @returns <tt>associated_allocator<T, Allocator>::get(t, a)</tt>
135
154
  */
136
155
  template <typename T, typename Allocator>
137
- BOOST_ASIO_NODISCARD inline typename associated_allocator<T, Allocator>::type
156
+ BOOST_ASIO_NODISCARD inline BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
157
+ typename associated_allocator<T, Allocator>::type)
138
158
  get_associated_allocator(const T& t, const Allocator& a) BOOST_ASIO_NOEXCEPT
159
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
160
+ associated_allocator<T, Allocator>::get(t, a)))
139
161
  {
140
162
  return associated_allocator<T, Allocator>::get(t, a);
141
163
  }
@@ -148,12 +170,37 @@ using associated_allocator_t
148
170
 
149
171
  #endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES)
150
172
 
173
+ namespace detail {
174
+
175
+ template <typename T, typename A, typename = void>
176
+ struct associated_allocator_forwarding_base
177
+ {
178
+ };
179
+
180
+ template <typename T, typename A>
181
+ struct associated_allocator_forwarding_base<T, A,
182
+ typename enable_if<
183
+ is_same<
184
+ typename associated_allocator<T,
185
+ A>::asio_associated_allocator_is_unspecialised,
186
+ void
187
+ >::value
188
+ >::type>
189
+ {
190
+ typedef void asio_associated_allocator_is_unspecialised;
191
+ };
192
+
193
+ } // namespace detail
194
+
151
195
  #if defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER) \
152
196
  || defined(GENERATING_DOCUMENTATION)
153
197
 
154
198
  /// Specialisation of associated_allocator for @c std::reference_wrapper.
155
199
  template <typename T, typename Allocator>
156
200
  struct associated_allocator<reference_wrapper<T>, Allocator>
201
+ #if !defined(GENERATING_DOCUMENTATION)
202
+ : detail::associated_allocator_forwarding_base<T, Allocator>
203
+ #endif // !defined(GENERATING_DOCUMENTATION)
157
204
  {
158
205
  /// Forwards @c type to the associator specialisation for the unwrapped type
159
206
  /// @c T.
@@ -161,8 +208,17 @@ struct associated_allocator<reference_wrapper<T>, Allocator>
161
208
 
162
209
  /// Forwards the request to get the allocator to the associator specialisation
163
210
  /// for the unwrapped type @c T.
164
- static type get(reference_wrapper<T> t,
165
- const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
211
+ static type get(reference_wrapper<T> t) BOOST_ASIO_NOEXCEPT
212
+ {
213
+ return associated_allocator<T, Allocator>::get(t.get());
214
+ }
215
+
216
+ /// Forwards the request to get the allocator to the associator specialisation
217
+ /// for the unwrapped type @c T.
218
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(
219
+ reference_wrapper<T> t, const Allocator& a) BOOST_ASIO_NOEXCEPT
220
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
221
+ associated_allocator<T, Allocator>::get(t.get(), a)))
166
222
  {
167
223
  return associated_allocator<T, Allocator>::get(t.get(), a);
168
224
  }
@@ -18,6 +18,7 @@
18
18
  #include <boost/asio/detail/config.hpp>
19
19
  #include <boost/asio/associator.hpp>
20
20
  #include <boost/asio/cancellation_signal.hpp>
21
+ #include <boost/asio/detail/functional.hpp>
21
22
  #include <boost/asio/detail/type_traits.hpp>
22
23
 
23
24
  #include <boost/asio/detail/push_options.hpp>
@@ -49,7 +50,12 @@ struct associated_cancellation_slot_impl
49
50
 
50
51
  typedef S type;
51
52
 
52
- static type get(const T&, const S& s = S()) BOOST_ASIO_NOEXCEPT
53
+ static type get(const T&) BOOST_ASIO_NOEXCEPT
54
+ {
55
+ return type();
56
+ }
57
+
58
+ static const type& get(const T&, const S& s) BOOST_ASIO_NOEXCEPT
53
59
  {
54
60
  return s;
55
61
  }
@@ -61,7 +67,16 @@ struct associated_cancellation_slot_impl<T, S,
61
67
  {
62
68
  typedef typename T::cancellation_slot_type type;
63
69
 
64
- static type get(const T& t, const S& = S()) BOOST_ASIO_NOEXCEPT
70
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(
71
+ const T& t) BOOST_ASIO_NOEXCEPT
72
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_cancellation_slot()))
73
+ {
74
+ return t.get_cancellation_slot();
75
+ }
76
+
77
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(
78
+ const T& t, const S&) BOOST_ASIO_NOEXCEPT
79
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_cancellation_slot()))
65
80
  {
66
81
  return t.get_cancellation_slot();
67
82
  }
@@ -94,10 +109,12 @@ struct associated_cancellation_slot_impl<T, S,
94
109
  * CancellationSlot requirements.
95
110
  *
96
111
  * @li Provide a noexcept static member function named @c get, callable as @c
97
- * get(t) and with return type @c type.
112
+ * get(t) and with return type @c type or a (possibly const) reference to @c
113
+ * type.
98
114
  *
99
115
  * @li Provide a noexcept static member function named @c get, callable as @c
100
- * get(t,s) and with return type @c type.
116
+ * get(t,s) and with return type @c type or a (possibly const) reference to @c
117
+ * type.
101
118
  */
102
119
  template <typename T, typename CancellationSlot = cancellation_slot>
103
120
  struct associated_cancellation_slot
@@ -111,10 +128,14 @@ struct associated_cancellation_slot
111
128
  /// @c CancellationSlot.
112
129
  typedef see_below type;
113
130
 
131
+ /// If @c T has a nested type @c cancellation_slot_type, returns
132
+ /// <tt>t.get_cancellation_slot()</tt>. Otherwise returns @c type().
133
+ static decltype(auto) get(const T& t) BOOST_ASIO_NOEXCEPT;
134
+
114
135
  /// If @c T has a nested type @c cancellation_slot_type, returns
115
136
  /// <tt>t.get_cancellation_slot()</tt>. Otherwise returns @c s.
116
- static type get(const T& t,
117
- const CancellationSlot& s = CancellationSlot()) BOOST_ASIO_NOEXCEPT;
137
+ static decltype(auto) get(const T& t,
138
+ const CancellationSlot& s) BOOST_ASIO_NOEXCEPT;
118
139
  #endif // defined(GENERATING_DOCUMENTATION)
119
140
  };
120
141
 
@@ -135,10 +156,12 @@ get_associated_cancellation_slot(const T& t) BOOST_ASIO_NOEXCEPT
135
156
  * CancellationSlot>::get(t, st)</tt>
136
157
  */
137
158
  template <typename T, typename CancellationSlot>
138
- BOOST_ASIO_NODISCARD inline
139
- typename associated_cancellation_slot<T, CancellationSlot>::type
159
+ BOOST_ASIO_NODISCARD inline BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
160
+ typename associated_cancellation_slot<T, CancellationSlot>::type)
140
161
  get_associated_cancellation_slot(const T& t,
141
162
  const CancellationSlot& st) BOOST_ASIO_NOEXCEPT
163
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
164
+ associated_cancellation_slot<T, CancellationSlot>::get(t, st)))
142
165
  {
143
166
  return associated_cancellation_slot<T, CancellationSlot>::get(t, st);
144
167
  }
@@ -172,6 +195,43 @@ struct associated_cancellation_slot_forwarding_base<T, S,
172
195
  };
173
196
 
174
197
  } // namespace detail
198
+
199
+ #if defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER) \
200
+ || defined(GENERATING_DOCUMENTATION)
201
+
202
+ /// Specialisation of associated_cancellation_slot for @c
203
+ /// std::reference_wrapper.
204
+ template <typename T, typename CancellationSlot>
205
+ struct associated_cancellation_slot<reference_wrapper<T>, CancellationSlot>
206
+ #if !defined(GENERATING_DOCUMENTATION)
207
+ : detail::associated_cancellation_slot_forwarding_base<T, CancellationSlot>
208
+ #endif // !defined(GENERATING_DOCUMENTATION)
209
+ {
210
+ /// Forwards @c type to the associator specialisation for the unwrapped type
211
+ /// @c T.
212
+ typedef typename associated_cancellation_slot<T, CancellationSlot>::type type;
213
+
214
+ /// Forwards the request to get the cancellation slot to the associator
215
+ /// specialisation for the unwrapped type @c T.
216
+ static type get(reference_wrapper<T> t) BOOST_ASIO_NOEXCEPT
217
+ {
218
+ return associated_cancellation_slot<T, CancellationSlot>::get(t.get());
219
+ }
220
+
221
+ /// Forwards the request to get the cancellation slot to the associator
222
+ /// specialisation for the unwrapped type @c T.
223
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(reference_wrapper<T> t,
224
+ const CancellationSlot& s = CancellationSlot()) BOOST_ASIO_NOEXCEPT
225
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
226
+ associated_cancellation_slot<T, CancellationSlot>::get(t.get(), s)))
227
+ {
228
+ return associated_cancellation_slot<T, CancellationSlot>::get(t.get(), s);
229
+ }
230
+ };
231
+
232
+ #endif // defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER)
233
+ // || defined(GENERATING_DOCUMENTATION)
234
+
175
235
  } // namespace asio
176
236
  } // namespace boost
177
237
 
@@ -52,7 +52,12 @@ struct associated_executor_impl
52
52
 
53
53
  typedef E type;
54
54
 
55
- static type get(const T&, const E& e = E()) BOOST_ASIO_NOEXCEPT
55
+ static type get(const T&) BOOST_ASIO_NOEXCEPT
56
+ {
57
+ return type();
58
+ }
59
+
60
+ static const type& get(const T&, const E& e) BOOST_ASIO_NOEXCEPT
56
61
  {
57
62
  return e;
58
63
  }
@@ -64,7 +69,16 @@ struct associated_executor_impl<T, E,
64
69
  {
65
70
  typedef typename T::executor_type type;
66
71
 
67
- static type get(const T& t, const E& = E()) BOOST_ASIO_NOEXCEPT
72
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(
73
+ const T& t) BOOST_ASIO_NOEXCEPT
74
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_executor()))
75
+ {
76
+ return t.get_executor();
77
+ }
78
+
79
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(
80
+ const T& t, const E&) BOOST_ASIO_NOEXCEPT
81
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_executor()))
68
82
  {
69
83
  return t.get_executor();
70
84
  }
@@ -97,10 +111,12 @@ struct associated_executor_impl<T, E,
97
111
  * Executor requirements.
98
112
  *
99
113
  * @li Provide a noexcept static member function named @c get, callable as @c
100
- * get(t) and with return type @c type.
114
+ * get(t) and with return type @c type or a (possibly const) reference to @c
115
+ * type.
101
116
  *
102
117
  * @li Provide a noexcept static member function named @c get, callable as @c
103
- * get(t,e) and with return type @c type.
118
+ * get(t,e) and with return type @c type or a (possibly const) reference to @c
119
+ * type.
104
120
  */
105
121
  template <typename T, typename Executor = system_executor>
106
122
  struct associated_executor
@@ -113,10 +129,13 @@ struct associated_executor
113
129
  /// Otherwise @c Executor.
114
130
  typedef see_below type;
115
131
 
132
+ /// If @c T has a nested type @c executor_type, returns
133
+ /// <tt>t.get_executor()</tt>. Otherwise returns @c type().
134
+ static decltype(auto) get(const T& t) BOOST_ASIO_NOEXCEPT;
135
+
116
136
  /// If @c T has a nested type @c executor_type, returns
117
137
  /// <tt>t.get_executor()</tt>. Otherwise returns @c ex.
118
- static type get(const T& t,
119
- const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT;
138
+ static decltype(auto) get(const T& t, const Executor& ex) BOOST_ASIO_NOEXCEPT;
120
139
  #endif // defined(GENERATING_DOCUMENTATION)
121
140
  };
122
141
 
@@ -136,11 +155,14 @@ get_associated_executor(const T& t) BOOST_ASIO_NOEXCEPT
136
155
  * @returns <tt>associated_executor<T, Executor>::get(t, ex)</tt>
137
156
  */
138
157
  template <typename T, typename Executor>
139
- BOOST_ASIO_NODISCARD inline typename associated_executor<T, Executor>::type
158
+ BOOST_ASIO_NODISCARD inline BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
159
+ typename associated_executor<T, Executor>::type)
140
160
  get_associated_executor(const T& t, const Executor& ex,
141
161
  typename constraint<
142
162
  is_executor<Executor>::value || execution::is_executor<Executor>::value
143
163
  >::type = 0) BOOST_ASIO_NOEXCEPT
164
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
165
+ associated_executor<T, Executor>::get(t, ex)))
144
166
  {
145
167
  return associated_executor<T, Executor>::get(t, ex);
146
168
  }
@@ -151,11 +173,15 @@ get_associated_executor(const T& t, const Executor& ex,
151
173
  * ExecutionContext::executor_type>::get(t, ctx.get_executor())</tt>
152
174
  */
153
175
  template <typename T, typename ExecutionContext>
154
- BOOST_ASIO_NODISCARD inline typename associated_executor<T,
155
- typename ExecutionContext::executor_type>::type
176
+ BOOST_ASIO_NODISCARD inline BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
177
+ typename associated_executor<T,
178
+ typename ExecutionContext::executor_type>::type)
156
179
  get_associated_executor(const T& t, ExecutionContext& ctx,
157
180
  typename constraint<is_convertible<ExecutionContext&,
158
181
  execution_context&>::value>::type = 0) BOOST_ASIO_NOEXCEPT
182
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
183
+ associated_executor<T,
184
+ typename ExecutionContext::executor_type>::get(t, ctx.get_executor())))
159
185
  {
160
186
  return associated_executor<T,
161
187
  typename ExecutionContext::executor_type>::get(t, ctx.get_executor());
@@ -206,8 +232,17 @@ struct associated_executor<reference_wrapper<T>, Executor>
206
232
 
207
233
  /// Forwards the request to get the executor to the associator specialisation
208
234
  /// for the unwrapped type @c T.
209
- static type get(reference_wrapper<T> t,
210
- const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT
235
+ static type get(reference_wrapper<T> t) BOOST_ASIO_NOEXCEPT
236
+ {
237
+ return associated_executor<T, Executor>::get(t.get());
238
+ }
239
+
240
+ /// Forwards the request to get the executor to the associator specialisation
241
+ /// for the unwrapped type @c T.
242
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(
243
+ reference_wrapper<T> t, const Executor& ex) BOOST_ASIO_NOEXCEPT
244
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
245
+ associated_executor<T, Executor>::get(t.get(), ex)))
211
246
  {
212
247
  return associated_executor<T, Executor>::get(t.get(), ex);
213
248
  }
@@ -1263,7 +1263,7 @@ private:
1263
1263
  {
1264
1264
  }
1265
1265
 
1266
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
1266
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
1267
1267
  {
1268
1268
  return self_->get_executor();
1269
1269
  }
@@ -1297,7 +1297,7 @@ private:
1297
1297
  {
1298
1298
  }
1299
1299
 
1300
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
1300
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
1301
1301
  {
1302
1302
  return self_->get_executor();
1303
1303
  }
@@ -1331,7 +1331,7 @@ private:
1331
1331
  {
1332
1332
  }
1333
1333
 
1334
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
1334
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
1335
1335
  {
1336
1336
  return self_->get_executor();
1337
1337
  }
@@ -1365,7 +1365,7 @@ private:
1365
1365
  {
1366
1366
  }
1367
1367
 
1368
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
1368
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
1369
1369
  {
1370
1370
  return self_->get_executor();
1371
1371
  }
@@ -318,7 +318,7 @@ public:
318
318
  }
319
319
 
320
320
  /// Get the executor associated with the object.
321
- executor_type get_executor() BOOST_ASIO_NOEXCEPT
321
+ const executor_type& get_executor() BOOST_ASIO_NOEXCEPT
322
322
  {
323
323
  return impl_.get_executor();
324
324
  }
@@ -680,7 +680,7 @@ private:
680
680
  {
681
681
  }
682
682
 
683
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
683
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
684
684
  {
685
685
  return self_->get_executor();
686
686
  }
@@ -344,7 +344,7 @@ public:
344
344
  #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
345
345
 
346
346
  /// Get the executor associated with the object.
347
- executor_type get_executor() BOOST_ASIO_NOEXCEPT
347
+ const executor_type& get_executor() BOOST_ASIO_NOEXCEPT
348
348
  {
349
349
  return impl_.get_executor();
350
350
  }
@@ -635,7 +635,7 @@ private:
635
635
  {
636
636
  }
637
637
 
638
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
638
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
639
639
  {
640
640
  return self_->get_executor();
641
641
  }
@@ -668,7 +668,7 @@ private:
668
668
  {
669
669
  }
670
670
 
671
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
671
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
672
672
  {
673
673
  return self_->get_executor();
674
674
  }
@@ -1254,7 +1254,7 @@ private:
1254
1254
  {
1255
1255
  }
1256
1256
 
1257
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
1257
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
1258
1258
  {
1259
1259
  return self_->get_executor();
1260
1260
  }
@@ -1288,7 +1288,7 @@ private:
1288
1288
  {
1289
1289
  }
1290
1290
 
1291
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
1291
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
1292
1292
  {
1293
1293
  return self_->get_executor();
1294
1294
  }
@@ -1322,7 +1322,7 @@ private:
1322
1322
  {
1323
1323
  }
1324
1324
 
1325
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
1325
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
1326
1326
  {
1327
1327
  return self_->get_executor();
1328
1328
  }
@@ -1356,7 +1356,7 @@ private:
1356
1356
  {
1357
1357
  }
1358
1358
 
1359
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
1359
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
1360
1360
  {
1361
1361
  return self_->get_executor();
1362
1362
  }
@@ -264,7 +264,7 @@ public:
264
264
  }
265
265
 
266
266
  /// Get the executor associated with the object.
267
- executor_type get_executor() BOOST_ASIO_NOEXCEPT
267
+ const executor_type& get_executor() BOOST_ASIO_NOEXCEPT
268
268
  {
269
269
  return impl_.get_executor();
270
270
  }
@@ -594,7 +594,7 @@ private:
594
594
  {
595
595
  }
596
596
 
597
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
597
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
598
598
  {
599
599
  return self_->get_executor();
600
600
  }
@@ -769,7 +769,7 @@ private:
769
769
  {
770
770
  }
771
771
 
772
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
772
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
773
773
  {
774
774
  return self_->get_executor();
775
775
  }
@@ -803,7 +803,7 @@ private:
803
803
  {
804
804
  }
805
805
 
806
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
806
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
807
807
  {
808
808
  return self_->get_executor();
809
809
  }
@@ -354,7 +354,7 @@ public:
354
354
  }
355
355
 
356
356
  /// Get the executor associated with the object.
357
- executor_type get_executor() BOOST_ASIO_NOEXCEPT
357
+ const executor_type& get_executor() BOOST_ASIO_NOEXCEPT
358
358
  {
359
359
  return impl_.get_executor();
360
360
  }
@@ -928,7 +928,7 @@ private:
928
928
  {
929
929
  }
930
930
 
931
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
931
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
932
932
  {
933
933
  return self_->get_executor();
934
934
  }
@@ -961,7 +961,7 @@ private:
961
961
  {
962
962
  }
963
963
 
964
- executor_type get_executor() const BOOST_ASIO_NOEXCEPT
964
+ const executor_type& get_executor() const BOOST_ASIO_NOEXCEPT
965
965
  {
966
966
  return self_->get_executor();
967
967
  }