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
@@ -550,6 +550,61 @@ struct is_class< std::pair >
550
550
  static const bool value = true;
551
551
  };
552
552
 
553
+
554
+ //Triviality of pair
555
+ template<class T>
556
+ struct is_trivially_copy_constructible;
557
+
558
+ template<class A, class B>
559
+ struct is_trivially_copy_assignable
560
+ <boost::container::dtl::pair<A,B> >
561
+ {
562
+ static const bool value = boost::move_detail::is_trivially_copy_assignable<A>::value &&
563
+ boost::move_detail::is_trivially_copy_assignable<B>::value ;
564
+ };
565
+
566
+ template<class T>
567
+ struct is_trivially_move_constructible;
568
+
569
+ template<class A, class B>
570
+ struct is_trivially_move_assignable
571
+ <boost::container::dtl::pair<A,B> >
572
+ {
573
+ static const bool value = boost::move_detail::is_trivially_move_assignable<A>::value &&
574
+ boost::move_detail::is_trivially_move_assignable<B>::value ;
575
+ };
576
+
577
+ template<class T>
578
+ struct is_trivially_copy_assignable;
579
+
580
+ template<class A, class B>
581
+ struct is_trivially_copy_constructible<boost::container::dtl::pair<A,B> >
582
+ {
583
+ static const bool value = boost::move_detail::is_trivially_copy_constructible<A>::value &&
584
+ boost::move_detail::is_trivially_copy_constructible<B>::value ;
585
+ };
586
+
587
+ template<class T>
588
+ struct is_trivially_move_assignable;
589
+
590
+ template<class A, class B>
591
+ struct is_trivially_move_constructible<boost::container::dtl::pair<A,B> >
592
+ {
593
+ static const bool value = boost::move_detail::is_trivially_move_constructible<A>::value &&
594
+ boost::move_detail::is_trivially_move_constructible<B>::value ;
595
+ };
596
+
597
+ template<class T>
598
+ struct is_trivially_destructible;
599
+
600
+ template<class A, class B>
601
+ struct is_trivially_destructible<boost::container::dtl::pair<A,B> >
602
+ {
603
+ static const bool value = boost::move_detail::is_trivially_destructible<A>::value &&
604
+ boost::move_detail::is_trivially_destructible<B>::value ;
605
+ };
606
+
607
+
553
608
  } //namespace move_detail{
554
609
 
555
610
  } //namespace boost {
@@ -32,6 +32,9 @@ class allocator;
32
32
  template<class T>
33
33
  struct less;
34
34
 
35
+ template<class T>
36
+ struct equal_to;
37
+
35
38
  template<class T1, class T2>
36
39
  struct pair;
37
40
 
@@ -0,0 +1,181 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // (C) Copyright Ion Gaztanaga 2018-2018. Distributed under the Boost
4
+ // Software License, Version 1.0. (See accompanying file
5
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
+ //
7
+ // See http://www.boost.org/libs/interprocess for documentation.
8
+ //
9
+ //////////////////////////////////////////////////////////////////////////////
10
+ //////////////////////////////////////////////////////////////////////////////
11
+ //
12
+ // This code is partially based on the lightweight mutex implemented
13
+ // by Boost.SmartPtr:
14
+ //
15
+ // Copyright (c) 2002, 2003 Peter Dimov
16
+ // Copyright (c) Microsoft Corporation 2014
17
+ //
18
+ // Distributed under the Boost Software License, Version 1.0. (See
19
+ // accompanying file LICENSE_1_0.txt or copy at
20
+ // http://www.boost.org/LICENSE_1_0.txt)
21
+ //
22
+ //////////////////////////////////////////////////////////////////////////////
23
+
24
+ #ifndef BOOST_CONFIG_HPP
25
+ # include <boost/config.hpp>
26
+ #endif
27
+ #
28
+ #if defined(BOOST_HAS_PRAGMA_ONCE)
29
+ # pragma once
30
+ #endif
31
+
32
+ #ifndef BOOST_CONTAINER_DETAIL_THREAD_MUTEX_HPP
33
+ #define BOOST_CONTAINER_DETAIL_THREAD_MUTEX_HPP
34
+
35
+ #include <boost/container/detail/config_begin.hpp>
36
+ #include <boost/container/detail/workaround.hpp>
37
+
38
+ #if defined(BOOST_HAS_PTHREADS)
39
+
40
+ #include <pthread.h>
41
+ #include <boost/assert.hpp>
42
+
43
+ namespace boost{
44
+ namespace container {
45
+ namespace dtl {
46
+
47
+ class thread_mutex
48
+ {
49
+ public:
50
+ thread_mutex()
51
+ {
52
+ BOOST_VERIFY(pthread_mutex_init(&m_mut, 0) == 0);
53
+ }
54
+
55
+ ~thread_mutex()
56
+ {
57
+ BOOST_VERIFY(pthread_mutex_destroy(&m_mut) == 0);
58
+ }
59
+
60
+ void lock()
61
+ {
62
+ BOOST_VERIFY(pthread_mutex_lock( &m_mut) == 0);
63
+ }
64
+
65
+ void unlock()
66
+ {
67
+ BOOST_VERIFY(pthread_mutex_unlock(&m_mut) == 0);
68
+ }
69
+
70
+ private:
71
+ thread_mutex(thread_mutex const &);
72
+ thread_mutex & operator=(thread_mutex const &);
73
+
74
+ pthread_mutex_t m_mut;
75
+ };
76
+
77
+ } // namespace dtl {
78
+ } // namespace container {
79
+ } // namespace boost {
80
+
81
+ #else //!BOOST_HAS_PTHREADS (Windows implementation)
82
+
83
+ #ifdef BOOST_USE_WINDOWS_H
84
+
85
+ #include <windows.h>
86
+
87
+ namespace boost{
88
+ namespace container {
89
+ namespace dtl {
90
+
91
+ typedef ::CRITICAL_SECTION win_critical_section;
92
+
93
+ } // namespace dtl {
94
+ } // namespace container {
95
+ } // namespace boost {
96
+
97
+ #else //! BOOST_USE_WINDOWS_H
98
+
99
+ struct _RTL_CRITICAL_SECTION_DEBUG;
100
+ struct _RTL_CRITICAL_SECTION;
101
+
102
+ namespace boost{
103
+ namespace container {
104
+ namespace dtl {
105
+
106
+ #ifdef BOOST_PLAT_WINDOWS_UWP
107
+ extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSectionEx(::_RTL_CRITICAL_SECTION *, unsigned long, unsigned long);
108
+ #else
109
+ extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(::_RTL_CRITICAL_SECTION *);
110
+ #endif
111
+ extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(::_RTL_CRITICAL_SECTION *);
112
+ extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(::_RTL_CRITICAL_SECTION *);
113
+ extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(::_RTL_CRITICAL_SECTION *);
114
+
115
+ struct win_critical_section
116
+ {
117
+ struct _RTL_CRITICAL_SECTION_DEBUG * DebugInfo;
118
+ long LockCount;
119
+ long RecursionCount;
120
+ void * OwningThread;
121
+ void * LockSemaphore;
122
+ #if defined(_WIN64)
123
+ unsigned __int64 SpinCount;
124
+ #else
125
+ unsigned long SpinCount;
126
+ #endif
127
+ };
128
+
129
+ } // namespace dtl {
130
+ } // namespace container {
131
+ } // namespace boost {
132
+
133
+ #endif //BOOST_USE_WINDOWS_H
134
+
135
+ namespace boost{
136
+ namespace container {
137
+ namespace dtl {
138
+
139
+ class thread_mutex
140
+ {
141
+ public:
142
+ thread_mutex()
143
+ {
144
+ #ifdef BOOST_PLAT_WINDOWS_UWP
145
+ InitializeCriticalSectionEx(reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(&m_crit_sect), 4000, 0);
146
+ #else
147
+ InitializeCriticalSection(reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(&m_crit_sect));
148
+ #endif
149
+ }
150
+
151
+ void lock()
152
+ {
153
+ EnterCriticalSection(reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(&m_crit_sect));
154
+ }
155
+
156
+ void unlock()
157
+ {
158
+ LeaveCriticalSection(reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(&m_crit_sect));
159
+ }
160
+
161
+ ~thread_mutex()
162
+ {
163
+ DeleteCriticalSection(reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(&m_crit_sect));
164
+ }
165
+
166
+ private:
167
+ thread_mutex(thread_mutex const &);
168
+ thread_mutex & operator=(thread_mutex const &);
169
+
170
+ win_critical_section m_crit_sect;
171
+ };
172
+
173
+ } // namespace dtl {
174
+ } // namespace container {
175
+ } // namespace boost {
176
+
177
+ #endif //BOOST_HAS_PTHREADS
178
+
179
+ #include <boost/container/detail/config_end.hpp>
180
+
181
+ #endif // #ifndef BOOST_CONTAINER_DETAIL_THREAD_MUTEX_HPP
@@ -125,10 +125,6 @@ template
125
125
  struct tree_node
126
126
  : public intrusive_tree_hook<VoidPointer, tree_type_value, OptimizeSize>::type
127
127
  {
128
- private:
129
- //BOOST_COPYABLE_AND_MOVABLE(tree_node)
130
- tree_node();
131
-
132
128
  public:
133
129
  typedef typename intrusive_tree_hook
134
130
  <VoidPointer, tree_type_value, OptimizeSize>::type hook_type;
@@ -138,55 +134,86 @@ struct tree_node
138
134
  typedef tree_node< T, VoidPointer
139
135
  , tree_type_value, OptimizeSize> node_t;
140
136
 
137
+ typedef typename boost::container::dtl::aligned_storage
138
+ <sizeof(T), boost::container::dtl::alignment_of<T>::value>::type storage_t;
139
+ storage_t m_storage;
140
+
141
+ #if defined(BOOST_GCC) && (BOOST_GCC >= 40600) && (BOOST_GCC < 80000)
142
+ #pragma GCC diagnostic push
143
+ #pragma GCC diagnostic ignored "-Wstrict-aliasing"
144
+ #define BOOST_CONTAINER_DISABLE_ALIASING_WARNING
145
+ # endif
146
+
141
147
  BOOST_CONTAINER_FORCEINLINE T &get_data()
142
- {
143
- T* ptr = reinterpret_cast<T*>(&this->m_data);
144
- return *ptr;
145
- }
148
+ { return *reinterpret_cast<T*>(this->m_storage.data); }
146
149
 
147
150
  BOOST_CONTAINER_FORCEINLINE const T &get_data() const
148
- {
149
- const T* ptr = reinterpret_cast<const T*>(&this->m_data);
150
- return *ptr;
151
- }
151
+ { return *reinterpret_cast<const T*>(this->m_storage.data); }
152
+
153
+ BOOST_CONTAINER_FORCEINLINE T *get_data_ptr()
154
+ { return reinterpret_cast<T*>(this->m_storage.data); }
152
155
 
153
- internal_type m_data;
156
+ BOOST_CONTAINER_FORCEINLINE const T *get_data_ptr() const
157
+ { return reinterpret_cast<T*>(this->m_storage.data); }
158
+
159
+ BOOST_CONTAINER_FORCEINLINE internal_type &get_real_data()
160
+ { return *reinterpret_cast<internal_type*>(this->m_storage.data); }
161
+
162
+ BOOST_CONTAINER_FORCEINLINE const internal_type &get_real_data() const
163
+ { return *reinterpret_cast<const internal_type*>(this->m_storage.data); }
164
+
165
+ BOOST_CONTAINER_FORCEINLINE internal_type *get_real_data_ptr()
166
+ { return reinterpret_cast<internal_type*>(this->m_storage.data); }
167
+
168
+ BOOST_CONTAINER_FORCEINLINE const internal_type *get_real_data_ptr() const
169
+ { return reinterpret_cast<internal_type*>(this->m_storage.data); }
170
+
171
+ BOOST_CONTAINER_FORCEINLINE ~tree_node()
172
+ { reinterpret_cast<internal_type*>(this->m_storage.data)->~internal_type(); }
173
+
174
+ #if defined(BOOST_CONTAINER_DISABLE_ALIASING_WARNING)
175
+ #pragma GCC diagnostic pop
176
+ #undef BOOST_CONTAINER_DISABLE_ALIASING_WARNING
177
+ # endif
178
+
179
+ BOOST_CONTAINER_FORCEINLINE void destroy_header()
180
+ { static_cast<hook_type*>(this)->~hook_type(); }
154
181
 
155
182
  template<class T1, class T2>
156
183
  BOOST_CONTAINER_FORCEINLINE void do_assign(const std::pair<const T1, T2> &p)
157
184
  {
158
- const_cast<T1&>(m_data.first) = p.first;
159
- m_data.second = p.second;
185
+ const_cast<T1&>(this->get_real_data().first) = p.first;
186
+ this->get_real_data().second = p.second;
160
187
  }
161
188
 
162
189
  template<class T1, class T2>
163
190
  BOOST_CONTAINER_FORCEINLINE void do_assign(const pair<const T1, T2> &p)
164
191
  {
165
- const_cast<T1&>(m_data.first) = p.first;
166
- m_data.second = p.second;
192
+ const_cast<T1&>(this->get_real_data().first) = p.first;
193
+ this->get_real_data().second = p.second;
167
194
  }
168
195
 
169
196
  template<class V>
170
197
  BOOST_CONTAINER_FORCEINLINE void do_assign(const V &v)
171
- { m_data = v; }
198
+ { this->get_real_data() = v; }
172
199
 
173
200
  template<class T1, class T2>
174
201
  BOOST_CONTAINER_FORCEINLINE void do_move_assign(std::pair<const T1, T2> &p)
175
202
  {
176
- const_cast<T1&>(m_data.first) = ::boost::move(p.first);
177
- m_data.second = ::boost::move(p.second);
203
+ const_cast<T1&>(this->get_real_data().first) = ::boost::move(p.first);
204
+ this->get_real_data().second = ::boost::move(p.second);
178
205
  }
179
206
 
180
207
  template<class T1, class T2>
181
208
  BOOST_CONTAINER_FORCEINLINE void do_move_assign(pair<const T1, T2> &p)
182
209
  {
183
- const_cast<T1&>(m_data.first) = ::boost::move(p.first);
184
- m_data.second = ::boost::move(p.second);
210
+ const_cast<T1&>(this->get_real_data().first) = ::boost::move(p.first);
211
+ this->get_real_data().second = ::boost::move(p.second);
185
212
  }
186
213
 
187
214
  template<class V>
188
215
  BOOST_CONTAINER_FORCEINLINE void do_move_assign(V &v)
189
- { m_data = ::boost::move(v); }
216
+ { this->get_real_data() = ::boost::move(v); }
190
217
  };
191
218
 
192
219
  template <class T, class VoidPointer, boost::container::tree_type_enum tree_type_value, bool OptimizeSize>
@@ -361,10 +388,10 @@ class RecyclingCloner
361
388
  {}
362
389
 
363
390
  BOOST_CONTAINER_FORCEINLINE static void do_assign(node_ptr_type &p, const node_t &other, bool_<true>)
364
- { p->do_move_assign(const_cast<node_t &>(other).m_data); }
391
+ { p->do_move_assign(const_cast<node_t &>(other).get_real_data()); }
365
392
 
366
393
  BOOST_CONTAINER_FORCEINLINE static void do_assign(node_ptr_type &p, const node_t &other, bool_<false>)
367
- { p->do_assign(other.m_data); }
394
+ { p->do_assign(other.get_real_data()); }
368
395
 
369
396
  node_ptr_type operator()(const node_t &other) const
370
397
  {
@@ -386,7 +413,7 @@ class RecyclingCloner
386
413
  BOOST_CATCH_END
387
414
  }
388
415
  else{
389
- return m_holder.create_node(other.m_data);
416
+ return m_holder.create_node(other.get_real_data());
390
417
  }
391
418
  }
392
419
 
@@ -394,6 +421,7 @@ class RecyclingCloner
394
421
  intrusive_container &m_icont;
395
422
  };
396
423
 
424
+
397
425
  template<class KeyCompare, class KeyOfValue>
398
426
  struct key_node_compare
399
427
  : public boost::intrusive::detail::ebo_functor_holder<KeyCompare>
@@ -407,6 +435,21 @@ struct key_node_compare
407
435
  typedef KeyOfValue key_of_value;
408
436
  typedef typename KeyOfValue::type key_type;
409
437
 
438
+
439
+ template <class T, class VoidPointer, boost::container::tree_type_enum tree_type_value, bool OptimizeSize>
440
+ BOOST_CONTAINER_FORCEINLINE static const key_type &
441
+ key_from(const tree_node<T, VoidPointer, tree_type_value, OptimizeSize> &n)
442
+ {
443
+ return key_of_value()(n.get_data());
444
+ }
445
+
446
+ template <class T>
447
+ BOOST_CONTAINER_FORCEINLINE static const T &
448
+ key_from(const T &t)
449
+ {
450
+ return t;
451
+ }
452
+
410
453
  BOOST_CONTAINER_FORCEINLINE const key_compare &key_comp() const
411
454
  { return static_cast<const key_compare &>(*this); }
412
455
 
@@ -418,15 +461,15 @@ struct key_node_compare
418
461
 
419
462
  template<class U>
420
463
  BOOST_CONTAINER_FORCEINLINE bool operator()(const key_type &key1, const U &nonkey2) const
421
- { return this->key_comp()(key1, key_of_value()(nonkey2.get_data())); }
464
+ { return this->key_comp()(key1, this->key_from(nonkey2)); }
422
465
 
423
466
  template<class U>
424
467
  BOOST_CONTAINER_FORCEINLINE bool operator()(const U &nonkey1, const key_type &key2) const
425
- { return this->key_comp()(key_of_value()(nonkey1.get_data()), key2); }
468
+ { return this->key_comp()(this->key_from(nonkey1), key2); }
426
469
 
427
470
  template<class U, class V>
428
471
  BOOST_CONTAINER_FORCEINLINE bool operator()(const U &nonkey1, const V &nonkey2) const
429
- { return this->key_comp()(key_of_value()(nonkey1.get_data()), key_of_value()(nonkey2.get_data())); }
472
+ { return this->key_comp()(this->key_from(nonkey1), this->key_from(nonkey2)); }
430
473
  };
431
474
 
432
475
  template<class Options>
@@ -1260,21 +1303,72 @@ class tree
1260
1303
  BOOST_CONTAINER_FORCEINLINE const_iterator find(const key_type& k) const
1261
1304
  { return const_iterator(this->non_const_icont().find(k, KeyNodeCompare(key_comp()))); }
1262
1305
 
1306
+ template <class K>
1307
+ BOOST_CONTAINER_FORCEINLINE
1308
+ typename dtl::enable_if_transparent<key_compare, K, iterator>::type
1309
+ find(const K& k)
1310
+ { return iterator(this->icont().find(k, KeyNodeCompare(key_comp()))); }
1311
+
1312
+ template <class K>
1313
+ BOOST_CONTAINER_FORCEINLINE
1314
+ typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type
1315
+ find(const K& k) const
1316
+ { return const_iterator(this->non_const_icont().find(k, KeyNodeCompare(key_comp()))); }
1317
+
1263
1318
  BOOST_CONTAINER_FORCEINLINE size_type count(const key_type& k) const
1264
1319
  { return size_type(this->icont().count(k, KeyNodeCompare(key_comp()))); }
1265
1320
 
1321
+ template <class K>
1322
+ BOOST_CONTAINER_FORCEINLINE
1323
+ typename dtl::enable_if_transparent<key_compare, K, size_type>::type
1324
+ count(const K& k) const
1325
+ { return size_type(this->icont().count(k, KeyNodeCompare(key_comp()))); }
1326
+
1327
+ BOOST_CONTAINER_FORCEINLINE bool contains(const key_type& x) const
1328
+ { return this->find(x) != this->cend(); }
1329
+
1330
+ template<typename K>
1331
+ BOOST_CONTAINER_FORCEINLINE
1332
+ typename dtl::enable_if_transparent<key_compare, K, bool>::type
1333
+ contains(const K& x) const
1334
+ { return this->find(x) != this->cend(); }
1335
+
1266
1336
  BOOST_CONTAINER_FORCEINLINE iterator lower_bound(const key_type& k)
1267
1337
  { return iterator(this->icont().lower_bound(k, KeyNodeCompare(key_comp()))); }
1268
1338
 
1269
1339
  BOOST_CONTAINER_FORCEINLINE const_iterator lower_bound(const key_type& k) const
1270
1340
  { return const_iterator(this->non_const_icont().lower_bound(k, KeyNodeCompare(key_comp()))); }
1271
1341
 
1342
+ template <class K>
1343
+ BOOST_CONTAINER_FORCEINLINE
1344
+ typename dtl::enable_if_transparent<key_compare, K, iterator>::type
1345
+ lower_bound(const K& k)
1346
+ { return iterator(this->icont().lower_bound(k, KeyNodeCompare(key_comp()))); }
1347
+
1348
+ template <class K>
1349
+ BOOST_CONTAINER_FORCEINLINE
1350
+ typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type
1351
+ lower_bound(const K& k) const
1352
+ { return const_iterator(this->non_const_icont().lower_bound(k, KeyNodeCompare(key_comp()))); }
1353
+
1272
1354
  BOOST_CONTAINER_FORCEINLINE iterator upper_bound(const key_type& k)
1273
1355
  { return iterator(this->icont().upper_bound(k, KeyNodeCompare(key_comp()))); }
1274
1356
 
1275
1357
  BOOST_CONTAINER_FORCEINLINE const_iterator upper_bound(const key_type& k) const
1276
1358
  { return const_iterator(this->non_const_icont().upper_bound(k, KeyNodeCompare(key_comp()))); }
1277
1359
 
1360
+ template <class K>
1361
+ BOOST_CONTAINER_FORCEINLINE
1362
+ typename dtl::enable_if_transparent<key_compare, K, iterator>::type
1363
+ upper_bound(const K& k)
1364
+ { return iterator(this->icont().upper_bound(k, KeyNodeCompare(key_comp()))); }
1365
+
1366
+ template <class K>
1367
+ BOOST_CONTAINER_FORCEINLINE
1368
+ typename dtl::enable_if_transparent<key_compare, K, const_iterator>::type
1369
+ upper_bound(const K& k) const
1370
+ { return const_iterator(this->non_const_icont().upper_bound(k, KeyNodeCompare(key_comp()))); }
1371
+
1278
1372
  std::pair<iterator,iterator> equal_range(const key_type& k)
1279
1373
  {
1280
1374
  std::pair<iiterator, iiterator> ret =
@@ -1290,6 +1384,27 @@ class tree
1290
1384
  (const_iterator(ret.first), const_iterator(ret.second));
1291
1385
  }
1292
1386
 
1387
+ template <class K>
1388
+ BOOST_CONTAINER_FORCEINLINE
1389
+ typename dtl::enable_if_transparent<key_compare, K, std::pair<iterator,iterator> >::type
1390
+ equal_range(const K& k)
1391
+ {
1392
+ std::pair<iiterator, iiterator> ret =
1393
+ this->icont().equal_range(k, KeyNodeCompare(key_comp()));
1394
+ return std::pair<iterator,iterator>(iterator(ret.first), iterator(ret.second));
1395
+ }
1396
+
1397
+ template <class K>
1398
+ BOOST_CONTAINER_FORCEINLINE
1399
+ typename dtl::enable_if_transparent<key_compare, K, std::pair<const_iterator, const_iterator> >::type
1400
+ equal_range(const K& k) const
1401
+ {
1402
+ std::pair<iiterator, iiterator> ret =
1403
+ this->non_const_icont().equal_range(k, KeyNodeCompare(key_comp()));
1404
+ return std::pair<const_iterator,const_iterator>
1405
+ (const_iterator(ret.first), const_iterator(ret.second));
1406
+ }
1407
+
1293
1408
  std::pair<iterator,iterator> lower_bound_range(const key_type& k)
1294
1409
  {
1295
1410
  std::pair<iiterator, iiterator> ret =
@@ -1305,6 +1420,27 @@ class tree
1305
1420
  (const_iterator(ret.first), const_iterator(ret.second));
1306
1421
  }
1307
1422
 
1423
+ template <class K>
1424
+ BOOST_CONTAINER_FORCEINLINE
1425
+ typename dtl::enable_if_transparent<key_compare, K, std::pair<iterator,iterator> >::type
1426
+ lower_bound_range(const K& k)
1427
+ {
1428
+ std::pair<iiterator, iiterator> ret =
1429
+ this->icont().lower_bound_range(k, KeyNodeCompare(key_comp()));
1430
+ return std::pair<iterator,iterator>(iterator(ret.first), iterator(ret.second));
1431
+ }
1432
+
1433
+ template <class K>
1434
+ BOOST_CONTAINER_FORCEINLINE
1435
+ typename dtl::enable_if_transparent<key_compare, K, std::pair<const_iterator, const_iterator> >::type
1436
+ lower_bound_range(const K& k) const
1437
+ {
1438
+ std::pair<iiterator, iiterator> ret =
1439
+ this->non_const_icont().lower_bound_range(k, KeyNodeCompare(key_comp()));
1440
+ return std::pair<const_iterator,const_iterator>
1441
+ (const_iterator(ret.first), const_iterator(ret.second));
1442
+ }
1443
+
1308
1444
  BOOST_CONTAINER_FORCEINLINE void rebalance()
1309
1445
  { intrusive_tree_proxy_t::rebalance(this->icont()); }
1310
1446
 
@@ -1327,6 +1463,8 @@ class tree
1327
1463
  { return !(x < y); }
1328
1464
 
1329
1465
  BOOST_CONTAINER_FORCEINLINE friend void swap(tree& x, tree& y)
1466
+ BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value
1467
+ && boost::container::dtl::is_nothrow_swappable<Compare>::value )
1330
1468
  { x.swap(y); }
1331
1469
  };
1332
1470