passenger 6.0.0 → 6.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +148 -18
  3. data/CONTRIBUTORS +6 -0
  4. data/bin/passenger-install-nginx-module +1 -1
  5. data/bin/passenger-status +15 -0
  6. data/build/misc.rb +3 -1
  7. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +56 -3
  8. data/dev/copy_boost_headers +1 -0
  9. data/package.json +1 -1
  10. data/passenger.gemspec +1 -1
  11. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.css +0 -0
  12. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.js +0 -0
  13. data/resources/templates/error_renderer/with_details/src/bootstrap/config.json +0 -0
  14. data/resources/templates/standalone/http.erb +2 -0
  15. data/resources/templates/standalone/server.erb +1 -0
  16. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
  17. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -0
  18. data/src/agent/Core/ApplicationPool/Options.h +10 -0
  19. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
  20. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
  21. data/src/agent/Core/Config.h +13 -1
  22. data/src/agent/Core/Controller.h +1 -0
  23. data/src/agent/Core/Controller/Config.h +4 -1
  24. data/src/agent/Core/Controller/ForwardResponse.cpp +13 -0
  25. data/src/agent/Core/Controller/InitRequest.cpp +3 -0
  26. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -0
  27. data/src/agent/Core/CoreMain.cpp +2 -1
  28. data/src/agent/Core/OptionParser.h +3 -0
  29. data/src/agent/Core/SpawningKit/Context.h +1 -0
  30. data/src/agent/Core/SpawningKit/Handshake/Perform.h +1 -0
  31. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
  32. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
  33. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +2 -0
  34. data/src/agent/Watchdog/Config.h +14 -1
  35. data/src/agent/Watchdog/WatchdogMain.cpp +7 -0
  36. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +10 -0
  37. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +10 -0
  38. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +30 -0
  39. data/src/apache2_module/Hooks.cpp +6 -0
  40. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +20 -0
  41. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +24 -0
  42. data/src/cxx_supportlib/Constants.h +2 -1
  43. data/src/cxx_supportlib/LoggingKit/Config.h +2 -0
  44. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +15 -9
  45. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
  46. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +57 -2
  47. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +11 -7
  48. data/src/cxx_supportlib/oxt/system_calls.cpp +10 -10
  49. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +0 -4
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +46 -37
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +16 -15
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +45 -26
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +33 -0
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +1 -1
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +38 -14
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +2 -0
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +1 -1
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +3 -1
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -1
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +6 -1
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -4
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +4 -4
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +3 -3
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +4 -4
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +8 -6
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +17 -0
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +50 -5
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +2 -1
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +3 -2
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +4 -3
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +5 -3
  75. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +13 -12
  76. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +10 -10
  77. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +34 -34
  78. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +4 -4
  79. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +8 -8
  80. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +27 -27
  81. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +4 -4
  82. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +5 -4
  83. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1 -1
  84. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +3 -3
  85. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +89 -0
  86. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +83 -74
  87. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -33
  88. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +5 -5
  89. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
  90. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +3 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/has_constraints.hpp +3 -3
  92. data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +1 -1
  93. data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +19 -19
  94. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -0
  95. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +5 -2
  96. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +5 -1
  97. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +6 -2
  98. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
  99. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -0
  100. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +368 -52
  101. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -1
  102. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +6 -3
  103. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
  105. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -1
  106. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +6 -1
  107. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
  108. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -1
  109. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -1
  110. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -3
  111. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +3 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +3 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +9 -4
  115. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  116. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +1 -0
  117. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -2
  118. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +13 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +2 -2
  120. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +14 -4
  121. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -4
  122. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +262 -2
  123. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +4 -3
  124. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +1 -1
  125. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +7 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +22 -19
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +833 -459
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +24 -6
  129. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +2 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +61 -5
  131. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +33 -8
  132. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +132 -41
  133. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +16 -0
  134. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +54 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +58 -0
  136. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +28 -23
  137. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +167 -115
  138. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +55 -0
  139. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +3 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +181 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +167 -29
  142. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -0
  143. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +1 -1
  144. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +18 -0
  145. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +389 -3
  146. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +262 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +52 -8
  148. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +364 -0
  149. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +4 -2
  150. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -2
  152. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +286 -6
  153. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +56 -8
  154. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +43 -6
  155. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +100 -31
  156. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +2 -1
  157. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +126 -69
  158. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +75 -51
  159. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +136 -0
  160. data/src/cxx_supportlib/vendor-modified/boost/core/exchange.hpp +49 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +9 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +101 -130
  163. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +2 -2
  164. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +16 -1
  165. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +59 -0
  166. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +9 -2
  168. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +26 -10
  169. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +5 -0
  170. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +3 -3
  171. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +1 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +1 -1
  173. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +38 -47
  174. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +5 -5
  175. data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +7 -7
  176. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +62 -58
  177. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +1 -1
  178. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +29 -29
  179. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +38 -40
  180. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +4 -4
  181. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +44 -44
  182. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +39 -39
  183. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +15 -15
  184. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +7 -7
  185. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
  186. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +14 -14
  187. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +9 -9
  188. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
  189. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +2 -2
  191. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +2 -2
  192. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +6 -6
  193. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +1 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +3 -3
  198. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +33 -14
  199. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +12 -12
  200. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +4 -4
  201. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +3 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +39 -39
  203. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +61 -61
  204. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +4 -4
  205. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +66 -66
  206. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +54 -54
  207. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +6 -2
  208. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +3 -3
  209. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +1 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +65 -0
  211. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +23 -23
  214. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +4 -4
  215. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +13 -13
  216. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -4
  218. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +5 -5
  220. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +5 -2
  221. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +18 -13
  222. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +4 -4
  223. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +16 -5
  224. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +1 -1
  225. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +14 -8
  226. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/tss_null.cpp +2 -2
  227. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +13 -13
  228. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +27 -0
  229. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +29 -6
  231. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +12 -3
  232. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +1 -1
  233. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +8 -8
  236. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -0
  237. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +3 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +23 -3
  239. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +9 -3
  240. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -11
  241. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +20 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
  243. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +211 -101
  244. data/src/cxx_supportlib/vendor-modified/boost/parameter/python.hpp +5 -6
  245. data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +119 -25
  246. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +5 -0
  248. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +44 -0
  249. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +1 -0
  250. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +1 -1
  251. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +73 -0
  252. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +3 -1
  253. data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +1 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +52 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +6 -1
  257. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -2
  258. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  259. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +17 -8
  260. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/stringize.hpp +4 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/wstringize.hpp +4 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/random/detail/gray_coded_qrng.hpp +166 -0
  263. data/src/cxx_supportlib/vendor-modified/boost/random/detail/niederreiter_base2_table.hpp +513 -0
  264. data/src/cxx_supportlib/vendor-modified/boost/random/detail/qrng_base.hpp +291 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/random/detail/sobol_table.hpp +4106 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/random/faure.hpp +367 -0
  267. data/src/cxx_supportlib/vendor-modified/boost/random/niederreiter_base2.hpp +360 -0
  268. data/src/cxx_supportlib/vendor-modified/boost/random/sobol.hpp +237 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +43 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +13 -5
  271. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +1 -3
  273. data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +2 -2
  274. data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +11 -5
  275. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +14 -6
  276. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +3 -3
  277. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +6 -2
  278. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +55 -37
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +3 -2
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +7 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +3 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +5 -2
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +0 -3
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +15 -4
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +1 -2
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +12 -3
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +7 -3
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +6 -2
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -5
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -8
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +3 -3
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +3 -1
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -8
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +12 -11
  297. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -4
  298. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +1 -9
  299. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +2 -10
  300. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -0
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +60 -115
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +3 -3
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +2 -1
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +2 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +2 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +2 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +2 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +2 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +2 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +2 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +2 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +2 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +2 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +2 -1
  315. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +2 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +2 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +2 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +2 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +2 -1
  320. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +2 -1
  321. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +3 -3
  322. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -8
  323. data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +4 -24
  324. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +57 -0
  325. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +101 -0
  326. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +141 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_posix.hpp +132 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +775 -588
  329. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
  330. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +6 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +13 -6
  332. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +8 -3
  333. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +3 -1
  334. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_safety.hpp +160 -0
  335. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/tss_hooks.hpp +2 -2
  336. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +3 -3
  337. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +24 -1
  338. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +10 -1
  339. data/src/cxx_supportlib/vendor-modified/boost/thread/lock_guard.hpp +4 -4
  340. data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_traits.hpp +31 -0
  341. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +2 -2
  342. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +2 -2
  343. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +8 -53
  344. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +73 -4
  345. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +6 -6
  346. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +14 -9
  347. data/src/cxx_supportlib/vendor-modified/boost/thread/xtime.hpp +6 -6
  348. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +9 -8
  349. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +1 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +21 -19
  351. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +3 -1
  352. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +9 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +1 -1
  354. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +55 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +72 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +108 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +501 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_msvc10_fix.hpp +30 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -2
  360. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +117 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +557 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp +43 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +1 -1
  364. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +1 -1
  365. data/src/cxx_supportlib/vendor-modified/boost/type_traits/enable_if.hpp +37 -0
  366. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +344 -0
  367. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +5 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +5 -0
  369. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +5 -0
  370. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +21 -0
  371. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +21 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +21 -0
  373. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +22 -0
  374. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -1
  375. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +2 -1
  376. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +5 -15
  377. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +16 -6
  378. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +3 -1
  379. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +3 -4
  380. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +4 -6
  381. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +1 -1
  382. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +1 -1
  383. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +1 -1
  384. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +1 -1
  385. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +4 -79
  386. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +3 -97
  387. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_noncopyable.hpp +39 -0
  388. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +2 -2
  389. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -2
  390. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -0
  391. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +104 -63
  392. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +1 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +1 -1
  394. data/src/cxx_supportlib/vendor-modified/boost/typeof/constant.hpp +26 -0
  395. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +4 -4
  396. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -3
  397. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +1 -1
  398. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +4 -5
  399. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +5 -5
  400. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +9 -9
  401. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +3 -3
  402. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +2 -2
  403. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +6 -6
  404. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +1 -1
  405. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +4 -4
  406. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +2 -2
  407. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +2 -2
  408. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +16 -16
  409. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +5 -5
  410. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +201 -201
  411. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +301 -301
  412. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +401 -401
  413. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +101 -101
  414. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +3 -0
  415. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +2 -0
  416. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +26 -6
  417. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  418. data/src/helper-scripts/prespawn +1 -0
  419. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +40 -0
  420. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +26 -0
  421. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +48 -0
  422. data/src/nginx_module/Configuration.c +9 -5
  423. data/src/nginx_module/ContentHandler.c +5 -1
  424. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +15 -0
  425. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +15 -0
  426. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +28 -0
  427. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +6 -0
  428. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +11 -0
  429. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +11 -0
  430. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +23 -0
  431. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +8 -0
  432. data/src/nginx_module/ngx_http_passenger_module.c +2 -0
  433. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/logger.js +0 -0
  434. data/src/ruby_native_extension/extconf.rb +7 -0
  435. data/src/ruby_supportlib/phusion_passenger.rb +7 -7
  436. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +8 -0
  437. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +23 -0
  438. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -0
  439. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +1 -3
  440. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +37 -0
  441. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +1 -1
  442. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +10 -0
  443. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +2 -2
  444. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +5 -0
  445. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +11 -0
  446. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +3 -0
  447. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +1 -1
  448. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +6 -0
  449. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +15 -11
  450. metadata +48 -7
  451. data/src/cxx_supportlib/vendor-modified/boost/call_traits.hpp +0 -20
  452. data/src/cxx_supportlib/vendor-modified/boost/detail/call_traits.hpp +0 -172
  453. data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +0 -17
  454. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +0 -496
@@ -51,9 +51,11 @@ class BOOST_CONTAINER_DECL monotonic_buffer_resource
51
51
  : public memory_resource
52
52
  {
53
53
  block_slist m_memory_blocks;
54
- void* m_current_buffer;
54
+ void * m_current_buffer;
55
55
  std::size_t m_current_buffer_size;
56
56
  std::size_t m_next_buffer_size;
57
+ void * const m_initial_buffer;
58
+ std::size_t const m_initial_buffer_size;
57
59
 
58
60
  /// @cond
59
61
  void increase_next_buffer();
@@ -131,7 +133,7 @@ class BOOST_CONTAINER_DECL monotonic_buffer_resource
131
133
  std::size_t remaining_storage(std::size_t alignment = 1u) const BOOST_NOEXCEPT;
132
134
 
133
135
  //! <b>Returns</b>:
134
- //! The number of bytes of storage available for the specified alignment.
136
+ //! The address pointing to the start of the current free storage.
135
137
  //!
136
138
  //! <b>Note</b>: Non-standard extension.
137
139
  const void *current_buffer() const BOOST_NOEXCEPT;
@@ -172,7 +172,7 @@ class resource_adaptor
172
172
  {}
173
173
 
174
174
  explicit resource_adaptor(BOOST_RV_REF(Allocator) a2)
175
- : base_t(BOOST_MOVE_BASE(base_t, a2))
175
+ : base_t(::boost::move(a2))
176
176
  {}
177
177
 
178
178
  resource_adaptor& operator=(BOOST_COPY_ASSIGN_REF(resource_adaptor) other)
@@ -20,6 +20,7 @@
20
20
  #include <boost/container/detail/auto_link.hpp>
21
21
  #include <boost/container/pmr/memory_resource.hpp>
22
22
  #include <boost/container/detail/pool_resource.hpp>
23
+ #include <boost/container/detail/thread_mutex.hpp>
23
24
 
24
25
  #include <cstddef>
25
26
 
@@ -60,8 +61,8 @@ namespace pmr {
60
61
  class BOOST_CONTAINER_DECL synchronized_pool_resource
61
62
  : public memory_resource
62
63
  {
63
- pool_resource m_pool_resource;
64
- void *m_opaque_sync;
64
+ dtl::thread_mutex m_mut;
65
+ pool_resource m_pool_resource;
65
66
 
66
67
  public:
67
68
 
@@ -227,6 +227,21 @@ class set
227
227
  : base_t(ordered_range, first, last, comp, a)
228
228
  {}
229
229
 
230
+ //! <b>Effects</b>: Constructs an empty set using the specified allocator and
231
+ //! inserts elements from the ordered unique range [first ,last). This function
232
+ //! is more efficient than the normal range creation for ordered ranges.
233
+ //!
234
+ //! <b>Requires</b>: [first ,last) must be ordered according to the predicate and must be
235
+ //! unique values.
236
+ //!
237
+ //! <b>Complexity</b>: Linear in N.
238
+ //!
239
+ //! <b>Note</b>: Non-standard extension.
240
+ template <class InputIterator>
241
+ BOOST_CONTAINER_FORCEINLINE set(ordered_unique_range_t, InputIterator first, InputIterator last, const allocator_type& a)
242
+ : base_t(ordered_range, first, last, Compare(), a)
243
+ {}
244
+
230
245
  #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
231
246
  //! <b>Effects</b>: Constructs an empty set and
232
247
  //! inserts elements from the range [il.begin(), il.end()).
@@ -734,6 +749,26 @@ class set
734
749
  //! <b>Complexity</b>: Logarithmic.
735
750
  const_iterator find(const key_type& x) const;
736
751
 
752
+ //! <b>Requires</b>: This overload is available only if
753
+ //! key_compare::is_transparent exists.
754
+ //!
755
+ //! <b>Returns</b>: An iterator pointing to an element with the key
756
+ //! equivalent to x, or end() if such an element is not found.
757
+ //!
758
+ //! <b>Complexity</b>: Logarithmic.
759
+ template<typename K>
760
+ iterator find(const K& x);
761
+
762
+ //! <b>Requires</b>: This overload is available only if
763
+ //! key_compare::is_transparent exists.
764
+ //!
765
+ //! <b>Returns</b>: A const_iterator pointing to an element with the key
766
+ //! equivalent to x, or end() if such an element is not found.
767
+ //!
768
+ //! <b>Complexity</b>: Logarithmic.
769
+ template<typename K>
770
+ const_iterator find(const K& x) const;
771
+
737
772
  #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
738
773
 
739
774
  //! <b>Returns</b>: The number of elements with key equivalent to x.
@@ -742,14 +777,34 @@ class set
742
777
  BOOST_CONTAINER_FORCEINLINE size_type count(const key_type& x) const
743
778
  { return static_cast<size_type>(this->base_t::find(x) != this->base_t::cend()); }
744
779
 
780
+ //! <b>Requires</b>: This overload is available only if
781
+ //! key_compare::is_transparent exists.
782
+ //!
745
783
  //! <b>Returns</b>: The number of elements with key equivalent to x.
746
784
  //!
747
785
  //! <b>Complexity</b>: log(size())+count(k)
748
- BOOST_CONTAINER_FORCEINLINE size_type count(const key_type& x)
749
- { return static_cast<size_type>(this->base_t::find(x) != this->base_t::end()); }
786
+ template<typename K>
787
+ BOOST_CONTAINER_FORCEINLINE size_type count(const K& x) const
788
+ { return static_cast<size_type>(this->find(x) != this->cend()); }
750
789
 
751
790
  #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
752
791
 
792
+ //! <b>Returns</b>: Returns true if there is an element with key
793
+ //! equivalent to key in the container, otherwise false.
794
+ //!
795
+ //! <b>Complexity</b>: log(size()).
796
+ bool contains(const key_type& x) const;
797
+
798
+ //! <b>Requires</b>: This overload is available only if
799
+ //! key_compare::is_transparent exists.
800
+ //!
801
+ //! <b>Returns</b>: Returns true if there is an element with key
802
+ //! equivalent to key in the container, otherwise false.
803
+ //!
804
+ //! <b>Complexity</b>: log(size()).
805
+ template<typename K>
806
+ bool contains(const K& x) const;
807
+
753
808
  //! <b>Returns</b>: An iterator pointing to the first element with key not less
754
809
  //! than k, or a.end() if such an element is not found.
755
810
  //!
@@ -762,6 +817,26 @@ class set
762
817
  //! <b>Complexity</b>: Logarithmic
763
818
  const_iterator lower_bound(const key_type& x) const;
764
819
 
820
+ //! <b>Requires</b>: This overload is available only if
821
+ //! key_compare::is_transparent exists.
822
+ //!
823
+ //! <b>Returns</b>: An iterator pointing to the first element with key not less
824
+ //! than k, or a.end() if such an element is not found.
825
+ //!
826
+ //! <b>Complexity</b>: Logarithmic
827
+ template<typename K>
828
+ iterator lower_bound(const K& x);
829
+
830
+ //! <b>Requires</b>: This overload is available only if
831
+ //! key_compare::is_transparent exists.
832
+ //!
833
+ //! <b>Returns</b>: A const iterator pointing to the first element with key not
834
+ //! less than k, or a.end() if such an element is not found.
835
+ //!
836
+ //! <b>Complexity</b>: Logarithmic
837
+ template<typename K>
838
+ const_iterator lower_bound(const K& x) const;
839
+
765
840
  //! <b>Returns</b>: An iterator pointing to the first element with key not less
766
841
  //! than x, or end() if such an element is not found.
767
842
  //!
@@ -774,6 +849,26 @@ class set
774
849
  //! <b>Complexity</b>: Logarithmic
775
850
  const_iterator upper_bound(const key_type& x) const;
776
851
 
852
+ //! <b>Requires</b>: This overload is available only if
853
+ //! key_compare::is_transparent exists.
854
+ //!
855
+ //! <b>Returns</b>: An iterator pointing to the first element with key not less
856
+ //! than x, or end() if such an element is not found.
857
+ //!
858
+ //! <b>Complexity</b>: Logarithmic
859
+ template<typename K>
860
+ iterator upper_bound(const K& x);
861
+
862
+ //! <b>Requires</b>: This overload is available only if
863
+ //! key_compare::is_transparent exists.
864
+ //!
865
+ //! <b>Returns</b>: A const iterator pointing to the first element with key not
866
+ //! less than x, or end() if such an element is not found.
867
+ //!
868
+ //! <b>Complexity</b>: Logarithmic
869
+ template<typename K>
870
+ const_iterator upper_bound(const K& x) const;
871
+
777
872
  #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
778
873
 
779
874
  //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
@@ -788,17 +883,27 @@ class set
788
883
  BOOST_CONTAINER_FORCEINLINE std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const
789
884
  { return this->base_t::lower_bound_range(x); }
790
885
 
791
- #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
792
-
886
+ //! <b>Requires</b>: This overload is available only if
887
+ //! key_compare::is_transparent exists.
888
+ //!
793
889
  //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
794
890
  //!
795
891
  //! <b>Complexity</b>: Logarithmic
796
- std::pair<iterator,iterator> equal_range(const key_type& x);
892
+ template<typename K>
893
+ BOOST_CONTAINER_FORCEINLINE std::pair<iterator,iterator> equal_range(const K& x)
894
+ { return this->base_t::lower_bound_range(x); }
797
895
 
896
+ //! <b>Requires</b>: This overload is available only if
897
+ //! key_compare::is_transparent exists.
898
+ //!
798
899
  //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
799
900
  //!
800
901
  //! <b>Complexity</b>: Logarithmic
801
- std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const;
902
+ template<typename K>
903
+ BOOST_CONTAINER_FORCEINLINE std::pair<const_iterator,const_iterator> equal_range(const K& x) const
904
+ { return this->base_t::lower_bound_range(x); }
905
+
906
+ #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
802
907
 
803
908
  //! <b>Effects</b>: Rebalances the tree. It's a no-op for Red-Black and AVL trees.
804
909
  //!
@@ -854,6 +959,65 @@ class set
854
959
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
855
960
  };
856
961
 
962
+ #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
963
+
964
+ template <typename InputIterator>
965
+ set(InputIterator, InputIterator) ->
966
+ set< it_based_value_type_t<InputIterator> >;
967
+
968
+ template < typename InputIterator, typename AllocatorOrCompare>
969
+ set(InputIterator, InputIterator, AllocatorOrCompare const&) ->
970
+ set< it_based_value_type_t<InputIterator>
971
+ , typename dtl::if_c< // Compare
972
+ dtl::is_allocator<AllocatorOrCompare>::value
973
+ , std::less<it_based_value_type_t<InputIterator>>
974
+ , AllocatorOrCompare
975
+ >::type
976
+ , typename dtl::if_c< // Allocator
977
+ dtl::is_allocator<AllocatorOrCompare>::value
978
+ , AllocatorOrCompare
979
+ , new_allocator<it_based_value_type_t<InputIterator>>
980
+ >::type
981
+ >;
982
+
983
+ template < typename InputIterator, typename Compare, typename Allocator
984
+ , typename = dtl::require_nonallocator_t<Compare>
985
+ , typename = dtl::require_allocator_t<Allocator>>
986
+ set(InputIterator, InputIterator, Compare const&, Allocator const&) ->
987
+ set< it_based_value_type_t<InputIterator>
988
+ , Compare
989
+ , Allocator>;
990
+
991
+ template <typename InputIterator>
992
+ set(ordered_unique_range_t, InputIterator, InputIterator) ->
993
+ set< it_based_value_type_t<InputIterator>>;
994
+
995
+
996
+ template < typename InputIterator, typename AllocatorOrCompare>
997
+ set(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
998
+ set< it_based_value_type_t<InputIterator>
999
+ , typename dtl::if_c< // Compare
1000
+ dtl::is_allocator<AllocatorOrCompare>::value
1001
+ , std::less<it_based_value_type_t<InputIterator>>
1002
+ , AllocatorOrCompare
1003
+ >::type
1004
+ , typename dtl::if_c< // Allocator
1005
+ dtl::is_allocator<AllocatorOrCompare>::value
1006
+ , AllocatorOrCompare
1007
+ , new_allocator<it_based_value_type_t<InputIterator>>
1008
+ >::type
1009
+ >;
1010
+
1011
+ template < typename InputIterator, typename Compare, typename Allocator
1012
+ , typename = dtl::require_nonallocator_t<Compare>
1013
+ , typename = dtl::require_allocator_t<Allocator>>
1014
+ set(ordered_unique_range_t, InputIterator, InputIterator, Compare const&, Allocator const&) ->
1015
+ set< it_based_value_type_t<InputIterator>
1016
+ , Compare
1017
+ , Allocator>;
1018
+
1019
+ #endif
1020
+
857
1021
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
858
1022
 
859
1023
  } //namespace container {
@@ -1024,6 +1188,20 @@ class multiset
1024
1188
  : base_t(ordered_range, first, last, comp, a)
1025
1189
  {}
1026
1190
 
1191
+ //! <b>Effects</b>: Constructs an empty multiset using the specified allocator and
1192
+ //! inserts elements from the ordered range [first ,last ). This function
1193
+ //! is more efficient than the normal range creation for ordered ranges.
1194
+ //!
1195
+ //! <b>Requires</b>: [first ,last) must be ordered according to the predicate.
1196
+ //!
1197
+ //! <b>Complexity</b>: Linear in N.
1198
+ //!
1199
+ //! <b>Note</b>: Non-standard extension.
1200
+ template <class InputIterator>
1201
+ BOOST_CONTAINER_FORCEINLINE multiset(ordered_range_t, InputIterator first, InputIterator last, const allocator_type &a)
1202
+ : base_t(ordered_range, first, last, Compare(), a)
1203
+ {}
1204
+
1027
1205
  #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1028
1206
  //! @copydoc ::boost::container::set::set(std::initializer_list<value_type>)
1029
1207
  BOOST_CONTAINER_FORCEINLINE multiset(std::initializer_list<value_type> il)
@@ -1330,27 +1508,70 @@ class multiset
1330
1508
  //! @copydoc ::boost::container::set::find(const key_type& ) const
1331
1509
  const_iterator find(const key_type& x) const;
1332
1510
 
1511
+ //! @copydoc ::boost::container::set::find(const K& )
1512
+ template<typename K>
1513
+ iterator find(const K& x);
1514
+
1515
+ //! @copydoc ::boost::container::set::find(const K& )
1516
+ template<typename K>
1517
+ const_iterator find(const K& x) const;
1518
+
1333
1519
  //! @copydoc ::boost::container::set::count(const key_type& ) const
1334
1520
  size_type count(const key_type& x) const;
1335
1521
 
1522
+ //! @copydoc ::boost::container::set::count(const K& ) const
1523
+ template<typename K>
1524
+ size_type count(const K& x) const;
1525
+
1526
+ //! @copydoc ::boost::container::set::contains(const key_type& ) const
1527
+ bool contains(const key_type& x) const;
1528
+
1529
+ //! @copydoc ::boost::container::set::contains(const K& ) const
1530
+ template<typename K>
1531
+ bool contains(const K& x) const;
1532
+
1336
1533
  //! @copydoc ::boost::container::set::lower_bound(const key_type& )
1337
1534
  iterator lower_bound(const key_type& x);
1338
1535
 
1339
1536
  //! @copydoc ::boost::container::set::lower_bound(const key_type& ) const
1340
1537
  const_iterator lower_bound(const key_type& x) const;
1341
1538
 
1539
+ //! @copydoc ::boost::container::set::lower_bound(const K& )
1540
+ template<typename K>
1541
+ iterator lower_bound(const K& x);
1542
+
1543
+ //! @copydoc ::boost::container::set::lower_bound(const K& ) const
1544
+ template<typename K>
1545
+ const_iterator lower_bound(const K& x) const;
1546
+
1342
1547
  //! @copydoc ::boost::container::set::upper_bound(const key_type& )
1343
1548
  iterator upper_bound(const key_type& x);
1344
1549
 
1345
1550
  //! @copydoc ::boost::container::set::upper_bound(const key_type& ) const
1346
1551
  const_iterator upper_bound(const key_type& x) const;
1347
1552
 
1553
+ //! @copydoc ::boost::container::set::upper_bound(const K& )
1554
+ template<typename K>
1555
+ iterator upper_bound(const K& x);
1556
+
1557
+ //! @copydoc ::boost::container::set::upper_bound(const K& ) const
1558
+ template<typename K>
1559
+ const_iterator upper_bound(const K& x) const;
1560
+
1348
1561
  //! @copydoc ::boost::container::set::equal_range(const key_type& ) const
1349
1562
  std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const;
1350
1563
 
1351
1564
  //! @copydoc ::boost::container::set::equal_range(const key_type& )
1352
1565
  std::pair<iterator,iterator> equal_range(const key_type& x);
1353
1566
 
1567
+ //! @copydoc ::boost::container::set::equal_range(const K& ) const
1568
+ template<typename K>
1569
+ std::pair<const_iterator, const_iterator> equal_range(const K& x) const;
1570
+
1571
+ //! @copydoc ::boost::container::set::equal_range(const K& )
1572
+ template<typename K>
1573
+ std::pair<iterator,iterator> equal_range(const K& x);
1574
+
1354
1575
  //! @copydoc ::boost::container::set::rebalance()
1355
1576
  void rebalance();
1356
1577
 
@@ -1404,6 +1625,65 @@ class multiset
1404
1625
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
1405
1626
  };
1406
1627
 
1628
+ #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
1629
+
1630
+ template <typename InputIterator>
1631
+ multiset(InputIterator, InputIterator) ->
1632
+ multiset< it_based_value_type_t<InputIterator> >;
1633
+
1634
+
1635
+ template < typename InputIterator, typename AllocatorOrCompare>
1636
+ multiset(InputIterator, InputIterator, AllocatorOrCompare const&) ->
1637
+ multiset < it_based_value_type_t<InputIterator>
1638
+ , typename dtl::if_c< // Compare
1639
+ dtl::is_allocator<AllocatorOrCompare>::value
1640
+ , std::less<it_based_value_type_t<InputIterator>>
1641
+ , AllocatorOrCompare
1642
+ >::type
1643
+ , typename dtl::if_c< // Allocator
1644
+ dtl::is_allocator<AllocatorOrCompare>::value
1645
+ , AllocatorOrCompare
1646
+ , new_allocator<it_based_value_type_t<InputIterator>>
1647
+ >::type
1648
+ >;
1649
+
1650
+ template < typename InputIterator, typename Compare, typename Allocator
1651
+ , typename = dtl::require_nonallocator_t<Compare>
1652
+ , typename = dtl::require_allocator_t<Allocator>>
1653
+ multiset(InputIterator, InputIterator, Compare const&, Allocator const&) ->
1654
+ multiset< it_based_value_type_t<InputIterator>
1655
+ , Compare
1656
+ , Allocator>;
1657
+
1658
+ template <typename InputIterator>
1659
+ multiset(ordered_range_t, InputIterator, InputIterator) ->
1660
+ multiset< it_based_value_type_t<InputIterator>>;
1661
+
1662
+ template < typename InputIterator, typename AllocatorOrCompare>
1663
+ multiset(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
1664
+ multiset < it_based_value_type_t<InputIterator>
1665
+ , typename dtl::if_c< // Compare
1666
+ dtl::is_allocator<AllocatorOrCompare>::value
1667
+ , std::less<it_based_value_type_t<InputIterator>>
1668
+ , AllocatorOrCompare
1669
+ >::type
1670
+ , typename dtl::if_c< // Allocator
1671
+ dtl::is_allocator<AllocatorOrCompare>::value
1672
+ , AllocatorOrCompare
1673
+ , new_allocator<it_based_value_type_t<InputIterator>>
1674
+ >::type
1675
+ >;
1676
+
1677
+ template < typename InputIterator, typename Compare, typename Allocator
1678
+ , typename = dtl::require_nonallocator_t<Compare>
1679
+ , typename = dtl::require_allocator_t<Allocator>>
1680
+ multiset(ordered_range_t, InputIterator, InputIterator, Compare const&, Allocator const&) ->
1681
+ multiset< it_based_value_type_t<InputIterator>
1682
+ , Compare
1683
+ , Allocator>;
1684
+
1685
+ #endif
1686
+
1407
1687
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
1408
1688
 
1409
1689
  } //namespace container {
@@ -71,26 +71,62 @@ struct slist_hook
71
71
  <dtl::bi::void_pointer<VoidPointer>, dtl::bi::link_mode<dtl::bi::normal_link> >::type type;
72
72
  };
73
73
 
74
+
74
75
  template <class T, class VoidPointer>
75
76
  struct slist_node
76
77
  : public slist_hook<VoidPointer>::type
77
78
  {
78
- private:
79
- slist_node();
80
-
81
79
  public:
82
80
  typedef T value_type;
81
+ typedef T internal_type;
83
82
  typedef typename slist_hook<VoidPointer>::type hook_type;
84
83
 
85
- T m_data;
84
+ typedef typename aligned_storage<sizeof(T), alignment_of<T>::value>::type storage_t;
85
+ storage_t m_storage;
86
+
87
+ #if defined(BOOST_GCC) && (BOOST_GCC >= 40600) && (BOOST_GCC < 80000)
88
+ #pragma GCC diagnostic push
89
+ #pragma GCC diagnostic ignored "-Wstrict-aliasing"
90
+ #define BOOST_CONTAINER_DISABLE_ALIASING_WARNING
91
+ # endif
92
+
93
+ BOOST_CONTAINER_FORCEINLINE T &get_data()
94
+ { return *reinterpret_cast<T*>(this->m_storage.data); }
95
+
96
+ BOOST_CONTAINER_FORCEINLINE const T &get_data() const
97
+ { return *reinterpret_cast<const T*>(this->m_storage.data); }
98
+
99
+ BOOST_CONTAINER_FORCEINLINE T *get_data_ptr()
100
+ { return reinterpret_cast<T*>(this->m_storage.data); }
101
+
102
+ BOOST_CONTAINER_FORCEINLINE const T *get_data_ptr() const
103
+ { return reinterpret_cast<T*>(this->m_storage.data); }
104
+
105
+ BOOST_CONTAINER_FORCEINLINE internal_type &get_real_data()
106
+ { return *reinterpret_cast<internal_type*>(this->m_storage.data); }
107
+
108
+ BOOST_CONTAINER_FORCEINLINE const internal_type &get_real_data() const
109
+ { return *reinterpret_cast<const internal_type*>(this->m_storage.data); }
86
110
 
87
- T &get_data()
88
- { return this->m_data; }
111
+ BOOST_CONTAINER_FORCEINLINE internal_type *get_real_data_ptr()
112
+ { return reinterpret_cast<internal_type*>(this->m_storage.data); }
89
113
 
90
- const T &get_data() const
91
- { return this->m_data; }
114
+ BOOST_CONTAINER_FORCEINLINE const internal_type *get_real_data_ptr() const
115
+ { return reinterpret_cast<internal_type*>(this->m_storage.data); }
116
+
117
+ BOOST_CONTAINER_FORCEINLINE ~slist_node()
118
+ { reinterpret_cast<T*>(this->m_storage.data)->~T(); }
119
+
120
+ #if defined(BOOST_CONTAINER_DISABLE_ALIASING_WARNING)
121
+ #pragma GCC diagnostic pop
122
+ #undef BOOST_CONTAINER_DISABLE_ALIASING_WARNING
123
+ # endif
124
+
125
+ BOOST_CONTAINER_FORCEINLINE void destroy_header()
126
+ { static_cast<hook_type*>(this)->~hook_type(); }
92
127
  };
93
128
 
129
+
94
130
  template <class T, class VoidPointer>
95
131
  struct iiterator_node_value_type< slist_node<T,VoidPointer> > {
96
132
  typedef T type;
@@ -1632,6 +1668,18 @@ class slist
1632
1668
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
1633
1669
  };
1634
1670
 
1671
+ #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
1672
+
1673
+ template <typename InpIt>
1674
+ slist(InpIt, InpIt) ->
1675
+ slist<typename iterator_traits<InpIt>::value_type>;
1676
+
1677
+ template <typename InpIt, typename Allocator>
1678
+ slist(InpIt, InpIt, Allocator const&) ->
1679
+ slist<typename iterator_traits<InpIt>::value_type, Allocator>;
1680
+
1681
+ #endif
1682
+
1635
1683
  }}
1636
1684
 
1637
1685
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED