passenger 6.0.22 → 6.0.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (334) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +59 -1
  3. data/Rakefile +13 -2
  4. data/bin/passenger-install-apache2-module +5 -0
  5. data/bin/passenger-install-nginx-module +18 -2
  6. data/build/apache2.rb +1 -1
  7. data/build/basics.rb +10 -4
  8. data/build/cxx_tests.rb +18 -7
  9. data/build/support/cxx_dependency_map.rb +40 -6
  10. data/build/test_basics.rb +24 -13
  11. data/package.json +1 -1
  12. data/passenger.gemspec +4 -2
  13. data/resources/templates/standalone/server.erb +1 -0
  14. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +8 -0
  15. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +10 -2
  16. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +8 -0
  17. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +9 -0
  18. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +9 -0
  19. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +63 -50
  20. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +19 -9
  21. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +8 -0
  22. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +9 -1
  23. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +8 -0
  24. data/src/agent/Core/ApplicationPool/Group.h +15 -5
  25. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +5 -0
  26. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +5 -0
  27. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +5 -0
  28. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +5 -0
  29. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +5 -0
  30. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +5 -0
  31. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +5 -0
  32. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +11 -4
  33. data/src/agent/Core/ApplicationPool/Pool.h +0 -2
  34. data/src/agent/Core/ApplicationPool/Process.h +22 -6
  35. data/src/agent/Core/ApplicationPool/Session.h +6 -1
  36. data/src/agent/Core/Config.h +8 -3
  37. data/src/agent/Core/Controller/CheckoutSession.cpp +24 -1
  38. data/src/agent/Core/Controller/Config.h +5 -1
  39. data/src/agent/Core/Controller.h +1 -0
  40. data/src/agent/Core/CoreMain.cpp +10 -17
  41. data/src/agent/Core/OptionParser.h +3 -0
  42. data/src/agent/Core/SpawningKit/ErrorRenderer.h +5 -0
  43. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -53
  44. data/src/agent/Core/SpawningKit/Handshake/Session.h +3 -0
  45. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
  46. data/src/agent/Core/SpawningKit/SmartSpawner.h +6 -2
  47. data/src/agent/Core/SpawningKit/Spawner.h +4 -0
  48. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +88 -9
  49. data/src/agent/Shared/Fundamentals/AbortHandler.h +2 -0
  50. data/src/agent/Shared/Fundamentals/Initialization.cpp +9 -3
  51. data/src/agent/Shared/Fundamentals/Initialization.h +3 -3
  52. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +6 -7
  53. data/src/agent/Watchdog/Config.h +2 -1
  54. data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
  55. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +5 -0
  56. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +15 -0
  57. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
  58. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +5 -0
  59. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +3 -0
  60. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +13 -0
  61. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +7 -0
  62. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +16 -0
  63. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +3 -0
  64. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +2 -1
  65. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -1
  66. data/src/cxx_supportlib/Constants.h +1 -1
  67. data/src/cxx_supportlib/DataStructures/LString.h +4 -0
  68. data/src/cxx_supportlib/DataStructures/StringMap.h +0 -1
  69. data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
  70. data/src/cxx_supportlib/SafeLibev.h +1 -3
  71. data/src/cxx_supportlib/ServerKit/Hooks.h +2 -2
  72. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +0 -1
  73. data/src/cxx_supportlib/ServerKit/HttpServer.h +15 -10
  74. data/src/cxx_supportlib/ServerKit/Server.h +0 -6
  75. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +2 -0
  76. data/src/cxx_supportlib/Utils/SpeedMeter.h +0 -3
  77. data/src/cxx_supportlib/oxt/implementation.cpp +11 -0
  78. data/src/cxx_supportlib/oxt/system_calls.cpp +10 -3
  79. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +35 -9
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +3 -2
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +74 -68
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +11 -11
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +10 -10
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +1 -1
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +3 -3
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +2 -2
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +1 -1
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +2 -2
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +9 -9
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +6 -6
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +1 -1
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +88 -22
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +91 -22
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +105 -23
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +90 -23
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2 -2
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +1 -1
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl/co_composed.hpp → co_composed.hpp} +208 -61
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +49 -0
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +10 -201
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +214 -48
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -4
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +9 -5
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +2 -2
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_message.hpp → detail/completion_message.hpp} +14 -16
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_payload.hpp → detail/completion_payload.hpp} +30 -32
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_handler.hpp → detail/completion_payload_handler.hpp} +15 -13
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +26 -32
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +5 -1
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -118
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -33
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +7 -5
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +6 -4
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +44 -35
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +64 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -11
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +20 -16
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +4 -4
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +23 -18
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +9 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +1 -1
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +11 -1
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +29 -51
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +1 -1
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +1 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +1 -1
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +1 -1
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +2 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +2 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +2 -114
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +2 -3
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +27 -19
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +0 -1
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +17 -15
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +2 -3
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +4 -2
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +3 -5
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +12 -7
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1 -1
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +38 -40
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +3 -3
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +5 -5
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +14 -7
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +45 -14
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +3 -3
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +8 -0
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +60 -166
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +14 -7
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +2 -2
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +14 -7
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +26 -177
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +16 -82
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +13 -286
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +55 -18
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +26 -185
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +16 -87
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +5 -5
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -6
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +1 -1
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +12 -6
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +1 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +127 -28
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +70 -20
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +114 -36
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +43 -3
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +2 -2
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +10 -7
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +5 -5
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +2 -2
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +2 -2
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +147 -35
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +74 -22
  205. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
  206. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +4 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +42 -11
  208. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +15 -37
  209. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +8 -8
  210. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  211. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +151 -10
  212. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +11 -9
  213. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +611 -102
  214. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +47 -47
  216. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +25 -24
  217. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
  218. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
  219. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
  220. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +35 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +14 -14
  222. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +1 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +55 -23
  224. data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
  225. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
  226. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +1 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +4 -4
  228. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +8 -8
  229. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +9 -9
  230. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
  231. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +96 -10
  232. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +19 -4
  233. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +17 -17
  235. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
  237. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +4 -4
  238. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +86 -52
  239. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
  240. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +12 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +145 -65
  242. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +105 -22
  243. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +2 -2
  244. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +30 -22
  245. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +19 -2
  246. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +15 -8
  248. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +6 -5
  249. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +15 -15
  250. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
  251. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -1
  252. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +3 -3
  253. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +1 -1
  254. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +2 -2
  255. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +31 -24
  256. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +45 -43
  257. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +45 -33
  258. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +5 -7
  259. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +55 -47
  260. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
  261. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +222 -73
  262. data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
  263. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +13 -13
  264. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +53 -5
  265. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +1 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
  267. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +2 -0
  268. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +7 -2
  269. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +22 -34
  270. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +141 -38
  271. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
  272. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +1 -1
  273. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +8 -6
  274. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
  275. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +22 -17
  276. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +9 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +6 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +1 -1
  285. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
  286. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +13 -1
  287. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +13 -1
  288. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +15 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +13 -1
  290. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +15 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +22 -6
  292. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +38 -10
  293. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +111 -2
  294. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +11 -1
  296. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +33 -7
  297. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +12 -0
  298. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +15 -0
  299. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +12 -0
  300. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +14 -0
  301. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +19 -0
  302. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +12 -0
  303. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +15 -0
  304. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +12 -0
  305. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +14 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +17 -0
  307. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
  308. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  309. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +8 -0
  310. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +12 -0
  311. data/src/nginx_module/Configuration.c +7 -2
  312. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +6 -0
  313. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +15 -0
  314. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +14 -0
  315. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +3 -0
  316. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +4 -0
  317. data/src/ruby_native_extension/passenger_native_support.c +1 -0
  318. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +5 -0
  319. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +6 -2
  320. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +10 -0
  321. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +12 -4
  322. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +5 -0
  323. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
  324. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -0
  325. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +73 -0
  326. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +30 -56
  327. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +5 -0
  328. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -0
  329. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
  330. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -198
  331. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +67 -0
  332. data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
  333. data/src/ruby_supportlib/phusion_passenger.rb +5 -5
  334. metadata +39 -10
@@ -76,7 +76,7 @@ class private_adaptive_node_pool
76
76
  private_adaptive_node_pool &operator=(const private_adaptive_node_pool &);
77
77
 
78
78
  public:
79
- static const std::size_t nodes_per_block = NodesPerBlock;
79
+ BOOST_STATIC_CONSTEXPR std::size_t nodes_per_block = NodesPerBlock;
80
80
 
81
81
  //!Constructor. Never throws
82
82
  private_adaptive_node_pool()
@@ -49,10 +49,10 @@ namespace container {
49
49
 
50
50
  namespace adaptive_pool_flag {
51
51
 
52
- static const unsigned int none = 0u;
53
- static const unsigned int align_only = 1u << 0u;
54
- static const unsigned int size_ordered = 1u << 1u;
55
- static const unsigned int address_ordered = 1u << 2u;
52
+ BOOST_CONTAINER_CONSTANT_VAR unsigned int none = 0u;
53
+ BOOST_CONTAINER_CONSTANT_VAR unsigned int align_only = 1u << 0u;
54
+ BOOST_CONTAINER_CONSTANT_VAR unsigned int size_ordered = 1u << 1u;
55
+ BOOST_CONTAINER_CONSTANT_VAR unsigned int address_ordered = 1u << 2u;
56
56
 
57
57
  } //namespace adaptive_pool_flag{
58
58
 
@@ -213,11 +213,11 @@ template<class MultiallocationChain, class VoidPointer, class SizeType, unsigned
213
213
  struct adaptive_pool_types
214
214
  {
215
215
  typedef VoidPointer void_pointer;
216
- static const unsigned ordered = (Flags & (adaptive_pool_flag::size_ordered | adaptive_pool_flag::address_ordered));
216
+ BOOST_STATIC_CONSTEXPR unsigned ordered = (Flags & (adaptive_pool_flag::size_ordered | adaptive_pool_flag::address_ordered));
217
217
  typedef block_container_traits<VoidPointer, SizeType, ordered> block_container_traits_t;
218
218
  typedef typename block_container_traits_t::hook_t hook_t;
219
219
  typedef hdr_offset_holder_t<SizeType> hdr_offset_holder;
220
- static const unsigned int order_flags = Flags & (adaptive_pool_flag::size_ordered | adaptive_pool_flag::address_ordered);
220
+ BOOST_STATIC_CONSTEXPR unsigned int order_flags = Flags & (adaptive_pool_flag::size_ordered | adaptive_pool_flag::address_ordered);
221
221
  typedef MultiallocationChain free_nodes_t;
222
222
 
223
223
  struct block_info_t
@@ -253,11 +253,11 @@ template< std::size_t alignment
253
253
  , std::size_t overhead_percent>
254
254
  struct candidate_power_of_2_ct_helper
255
255
  {
256
- static const std::size_t hdr_subblock_elements_alone = (alignment - hdr_size - payload_per_allocation)/real_node_size;
257
- static const std::size_t hdr_subblock_elements_first = (alignment - hdr_size - payload_per_allocation)/real_node_size;
258
- static const std::size_t elements_per_b_subblock_mid = (alignment - hdr_offset_size)/real_node_size;
259
- static const std::size_t elements_per_b_subblock_end = (alignment - hdr_offset_size - payload_per_allocation)/real_node_size;
260
- static const std::size_t num_b_subblock =
256
+ BOOST_STATIC_CONSTEXPR std::size_t hdr_subblock_elements_alone = (alignment - hdr_size - payload_per_allocation)/real_node_size;
257
+ BOOST_STATIC_CONSTEXPR std::size_t hdr_subblock_elements_first = (alignment - hdr_size - payload_per_allocation)/real_node_size;
258
+ BOOST_STATIC_CONSTEXPR std::size_t elements_per_b_subblock_mid = (alignment - hdr_offset_size)/real_node_size;
259
+ BOOST_STATIC_CONSTEXPR std::size_t elements_per_b_subblock_end = (alignment - hdr_offset_size - payload_per_allocation)/real_node_size;
260
+ BOOST_STATIC_CONSTEXPR std::size_t num_b_subblock =
261
261
  hdr_subblock_elements_alone >= min_elements_per_block
262
262
  ? 0
263
263
  : ( ((hdr_subblock_elements_first + elements_per_b_subblock_end) >= min_elements_per_block)
@@ -266,18 +266,18 @@ struct candidate_power_of_2_ct_helper
266
266
  )
267
267
  ;
268
268
 
269
- static const std::size_t num_b_subblock_mid = (num_b_subblock > 1) ? (num_b_subblock - 1) : 0;
269
+ BOOST_STATIC_CONSTEXPR std::size_t num_b_subblock_mid = (num_b_subblock > 1) ? (num_b_subblock - 1) : 0;
270
270
 
271
- static const std::size_t total_nodes = (num_b_subblock == 0)
271
+ BOOST_STATIC_CONSTEXPR std::size_t total_nodes = (num_b_subblock == 0)
272
272
  ? hdr_subblock_elements_alone
273
273
  : ( (num_b_subblock == 1)
274
274
  ? (hdr_subblock_elements_first + elements_per_b_subblock_end)
275
275
  : (hdr_subblock_elements_first + num_b_subblock_mid*elements_per_b_subblock_mid + elements_per_b_subblock_end)
276
276
  )
277
277
  ;
278
- static const std::size_t total_data = total_nodes*real_node_size;
279
- static const std::size_t total_size = alignment*(num_b_subblock+1);
280
- static const bool overhead_satisfied = (total_size - total_data)*100/total_size < overhead_percent;
278
+ BOOST_STATIC_CONSTEXPR std::size_t total_data = total_nodes*real_node_size;
279
+ BOOST_STATIC_CONSTEXPR std::size_t total_size = alignment*(num_b_subblock+1);
280
+ BOOST_STATIC_CONSTEXPR bool overhead_satisfied = (total_size - total_data)*100/total_size < overhead_percent;
281
281
  };
282
282
 
283
283
  template< std::size_t initial_alignment
@@ -299,7 +299,7 @@ struct candidate_power_of_2_ct
299
299
  , hdr_offset_size
300
300
  , overhead_percent> helper_t;
301
301
 
302
- static const std::size_t candidate_power_of_2 = initial_alignment << std::size_t(!helper_t::overhead_satisfied);
302
+ BOOST_STATIC_CONSTEXPR std::size_t candidate_power_of_2 = initial_alignment << std::size_t(!helper_t::overhead_satisfied);
303
303
 
304
304
  typedef typename candidate_power_of_2_ct
305
305
  < candidate_power_of_2
@@ -312,9 +312,9 @@ struct candidate_power_of_2_ct
312
312
  , !helper_t::overhead_satisfied
313
313
  >::type type;
314
314
 
315
- static const std::size_t alignment = type::alignment;
316
- static const std::size_t num_subblocks = type::num_subblocks;
317
- static const std::size_t real_num_node = type::real_num_node;
315
+ BOOST_STATIC_CONSTEXPR std::size_t alignment = type::alignment;
316
+ BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = type::num_subblocks;
317
+ BOOST_STATIC_CONSTEXPR std::size_t real_num_node = type::real_num_node;
318
318
  };
319
319
 
320
320
  template< std::size_t initial_alignment
@@ -354,9 +354,9 @@ struct candidate_power_of_2_ct
354
354
  , hdr_offset_size
355
355
  , overhead_percent> helper_t;
356
356
 
357
- static const std::size_t alignment = initial_alignment;
358
- static const std::size_t num_subblocks = helper_t::num_b_subblock+1;
359
- static const std::size_t real_num_node = helper_t::total_nodes;
357
+ BOOST_STATIC_CONSTEXPR std::size_t alignment = initial_alignment;
358
+ BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = helper_t::num_b_subblock+1;
359
+ BOOST_STATIC_CONSTEXPR std::size_t real_num_node = helper_t::total_nodes;
360
360
  };
361
361
 
362
362
  /////////////////////////////////////////////
@@ -429,13 +429,13 @@ class private_adaptive_node_pool_impl_common
429
429
  typedef typename SegmentManagerBase::size_type size_type;
430
430
  //Flags
431
431
  //align_only
432
- static const bool AlignOnly = (Flags & adaptive_pool_flag::align_only) != 0;
432
+ BOOST_STATIC_CONSTEXPR bool AlignOnly = (Flags & adaptive_pool_flag::align_only) != 0;
433
433
  typedef bool_<AlignOnly> IsAlignOnly;
434
434
  typedef true_ AlignOnlyTrue;
435
435
  typedef false_ AlignOnlyFalse;
436
436
 
437
437
  typedef typename SegmentManagerBase::void_pointer void_pointer;
438
- static const typename SegmentManagerBase::
438
+ BOOST_STATIC_CONSTEXPR typename SegmentManagerBase::
439
439
  size_type PayloadPerAllocation = SegmentManagerBase::PayloadPerAllocation;
440
440
 
441
441
  typedef typename boost::intrusive::pointer_traits
@@ -453,9 +453,9 @@ class private_adaptive_node_pool_impl_common
453
453
  typedef typename adaptive_pool_types_t::hdr_offset_holder hdr_offset_holder;
454
454
  typedef private_adaptive_node_pool_impl_common this_type;
455
455
 
456
- static const size_type MaxAlign = alignment_of<void_pointer>::value;
457
- static const size_type HdrSize = ((sizeof(block_info_t)-1)/MaxAlign+1)*MaxAlign;
458
- static const size_type HdrOffsetSize = ((sizeof(hdr_offset_holder)-1)/MaxAlign+1)*MaxAlign;
456
+ BOOST_STATIC_CONSTEXPR size_type MaxAlign = alignment_of<void_pointer>::value;
457
+ BOOST_STATIC_CONSTEXPR size_type HdrSize = ((sizeof(block_info_t)-1)/MaxAlign+1)*MaxAlign;
458
+ BOOST_STATIC_CONSTEXPR size_type HdrOffsetSize = ((sizeof(hdr_offset_holder)-1)/MaxAlign+1)*MaxAlign;
459
459
 
460
460
  segment_mngr_base_ptr_t mp_segment_mngr_base; //Segment manager
461
461
  block_container_t m_block_container; //Intrusive block list
@@ -981,9 +981,9 @@ template< class SizeType
981
981
  , bool AlignOnly>
982
982
  struct calculate_alignment_ct
983
983
  {
984
- static const std::size_t alignment = upper_power_of_2_ct<SizeType, HdrSize + RealNodeSize*NodesPerBlock>::value;
985
- static const std::size_t num_subblocks = 0;
986
- static const std::size_t real_num_node = (alignment - PayloadPerAllocation - HdrSize)/RealNodeSize;
984
+ BOOST_STATIC_CONSTEXPR std::size_t alignment = upper_power_of_2_ct<SizeType, HdrSize + RealNodeSize*NodesPerBlock>::value;
985
+ BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = 0;
986
+ BOOST_STATIC_CONSTEXPR std::size_t real_num_node = (alignment - PayloadPerAllocation - HdrSize)/RealNodeSize;
987
987
  };
988
988
 
989
989
  template< class SizeType
@@ -1013,9 +1013,9 @@ struct calculate_alignment_ct
1013
1013
  , OverheadPercent
1014
1014
  >::type type;
1015
1015
 
1016
- static const std::size_t alignment = type::alignment;
1017
- static const std::size_t num_subblocks = type::num_subblocks;
1018
- static const std::size_t real_num_node = type::real_num_node;
1016
+ BOOST_STATIC_CONSTEXPR std::size_t alignment = type::alignment;
1017
+ BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = type::num_subblocks;
1018
+ BOOST_STATIC_CONSTEXPR std::size_t real_num_node = type::real_num_node;
1019
1019
  };
1020
1020
 
1021
1021
 
@@ -1046,17 +1046,17 @@ class private_adaptive_node_pool_impl_ct
1046
1046
  typedef typename base_t::multiallocation_chain multiallocation_chain;
1047
1047
  typedef typename base_t::segment_manager_base_type segment_manager_base_type;
1048
1048
 
1049
- static const typename base_t::size_type PayloadPerAllocation = base_t::PayloadPerAllocation;
1049
+ BOOST_STATIC_CONSTEXPR typename base_t::size_type PayloadPerAllocation = base_t::PayloadPerAllocation;
1050
1050
 
1051
1051
  //align_only
1052
- static const bool AlignOnly = base_t::AlignOnly;
1052
+ BOOST_STATIC_CONSTEXPR bool AlignOnly = base_t::AlignOnly;
1053
1053
 
1054
1054
  private:
1055
- static const size_type MaxAlign = base_t::MaxAlign;
1056
- static const size_type HdrSize = base_t::HdrSize;
1057
- static const size_type HdrOffsetSize = base_t::HdrOffsetSize;
1055
+ BOOST_STATIC_CONSTEXPR size_type MaxAlign = base_t::MaxAlign;
1056
+ BOOST_STATIC_CONSTEXPR size_type HdrSize = base_t::HdrSize;
1057
+ BOOST_STATIC_CONSTEXPR size_type HdrOffsetSize = base_t::HdrOffsetSize;
1058
1058
 
1059
- static const size_type RealNodeSize = lcm_ct<NodeSize, alignment_of<void_pointer>::value>::value;
1059
+ BOOST_STATIC_CONSTEXPR size_type RealNodeSize = lcm_ct<NodeSize, alignment_of<void_pointer>::value>::value;
1060
1060
 
1061
1061
  typedef calculate_alignment_ct
1062
1062
  < size_type, HdrSize, PayloadPerAllocation
@@ -1065,9 +1065,9 @@ class private_adaptive_node_pool_impl_ct
1065
1065
  //Round the size to a power of two value.
1066
1066
  //This is the total memory size (including payload) that we want to
1067
1067
  //allocate from the general-purpose allocator
1068
- static const size_type NumSubBlocks = data_t::num_subblocks;
1069
- static const size_type RealNumNode = data_t::real_num_node;
1070
- static const size_type RealBlockAlignment = data_t::alignment;
1068
+ BOOST_STATIC_CONSTEXPR size_type NumSubBlocks = data_t::num_subblocks;
1069
+ BOOST_STATIC_CONSTEXPR size_type RealNumNode = data_t::real_num_node;
1070
+ BOOST_STATIC_CONSTEXPR size_type RealBlockAlignment = data_t::alignment;
1071
1071
 
1072
1072
  public:
1073
1073
 
@@ -1165,14 +1165,14 @@ class private_adaptive_node_pool_impl_rt
1165
1165
  typedef typename impl_t::size_type size_type;
1166
1166
  typedef typename impl_t::multiallocation_chain multiallocation_chain;
1167
1167
 
1168
- static const typename impl_t::size_type PayloadPerAllocation = impl_t::PayloadPerAllocation;
1168
+ BOOST_STATIC_CONSTEXPR typename impl_t::size_type PayloadPerAllocation = impl_t::PayloadPerAllocation;
1169
1169
 
1170
1170
  //Flags
1171
1171
  //align_only
1172
- static const bool AlignOnly = impl_t::AlignOnly;
1172
+ BOOST_STATIC_CONSTEXPR bool AlignOnly = impl_t::AlignOnly;
1173
1173
 
1174
- static const size_type HdrSize = impl_t::HdrSize;
1175
- static const size_type HdrOffsetSize = impl_t::HdrOffsetSize;
1174
+ BOOST_STATIC_CONSTEXPR size_type HdrSize = impl_t::HdrSize;
1175
+ BOOST_STATIC_CONSTEXPR size_type HdrOffsetSize = impl_t::HdrOffsetSize;
1176
1176
 
1177
1177
  public:
1178
1178
 
@@ -39,6 +39,7 @@
39
39
 
40
40
  #include <boost/move/utility_core.hpp>
41
41
  #include <boost/move/detail/force_ptr.hpp>
42
+ #include <boost/move/detail/launder.hpp>
42
43
  // other
43
44
  #include <boost/assert.hpp>
44
45
 
@@ -138,8 +139,8 @@ struct insert_value_initialized_n_proxy
138
139
  while (n){
139
140
  --n;
140
141
  storage_t v;
141
- alloc_traits::construct(a, move_detail::force_ptr<value_type *>(&v));
142
- value_type *vp = move_detail::force_ptr<value_type *>(&v);
142
+ alloc_traits::construct(a, (value_type*)&v);
143
+ value_type *vp = move_detail::launder_cast<value_type *>(&v);
143
144
  value_destructor<Allocator> on_exit(a, *vp); (void)on_exit;
144
145
  *p = ::boost::move(*vp);
145
146
  ++p;
@@ -165,8 +166,8 @@ struct insert_default_initialized_n_proxy
165
166
  while (n){
166
167
  --n;
167
168
  typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
168
- alloc_traits::construct(a, move_detail::force_ptr<value_type *>(&v), default_init);
169
- value_type *vp = move_detail::force_ptr<value_type *>(&v);
169
+ alloc_traits::construct(a, (value_type*)&v, default_init);
170
+ value_type *vp = move_detail::launder_cast<value_type *>(&v);
170
171
  value_destructor<Allocator> on_exit(a, *vp); (void)on_exit;
171
172
  *p = ::boost::move(*vp);
172
173
  ++p;
@@ -181,7 +182,7 @@ struct insert_copy_proxy
181
182
  typedef boost::container::allocator_traits<Allocator> alloc_traits;
182
183
  typedef typename alloc_traits::value_type value_type;
183
184
 
184
- static const bool single_value = true;
185
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
185
186
 
186
187
  inline explicit insert_copy_proxy(const value_type &v)
187
188
  : v_(v)
@@ -211,7 +212,7 @@ struct insert_move_proxy
211
212
  typedef boost::container::allocator_traits<Allocator> alloc_traits;
212
213
  typedef typename alloc_traits::value_type value_type;
213
214
 
214
- static const bool single_value = true;
215
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
215
216
 
216
217
  inline explicit insert_move_proxy(value_type &v)
217
218
  : v_(v)
@@ -264,7 +265,7 @@ struct insert_nonmovable_emplace_proxy
264
265
  typedef typename alloc_traits::value_type value_type;
265
266
  typedef typename build_number_seq<sizeof...(Args)>::type index_tuple_t;
266
267
 
267
- static const bool single_value = true;
268
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
268
269
 
269
270
  inline explicit insert_nonmovable_emplace_proxy(BOOST_FWD_REF(Args)... args)
270
271
  : args_(args...)
@@ -295,7 +296,7 @@ struct insert_emplace_proxy
295
296
  typedef typename base_t::value_type value_type;
296
297
  typedef typename base_t::index_tuple_t index_tuple_t;
297
298
 
298
- static const bool single_value = true;
299
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
299
300
 
300
301
  inline explicit insert_emplace_proxy(BOOST_FWD_REF(Args)... args)
301
302
  : base_t(::boost::forward<Args>(args)...)
@@ -312,8 +313,8 @@ struct insert_emplace_proxy
312
313
  {
313
314
  BOOST_ASSERT(n ==1); (void)n;
314
315
  typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
315
- alloc_traits::construct(a, move_detail::force_ptr<value_type *>(&v), ::boost::forward<Args>(get<IdxPack>(this->args_))...);
316
- value_type *vp = move_detail::force_ptr<value_type *>(&v);
316
+ alloc_traits::construct(a, (value_type*)&v, ::boost::forward<Args>(get<IdxPack>(this->args_))...);
317
+ value_type *vp = move_detail::launder_cast<value_type *>(&v);
317
318
  BOOST_CONTAINER_TRY{
318
319
  *p = ::boost::move(*vp);
319
320
  }
@@ -331,7 +332,7 @@ template<class Allocator>
331
332
  struct insert_emplace_proxy<Allocator, typename boost::container::allocator_traits<Allocator>::value_type>
332
333
  : public insert_move_proxy<Allocator>
333
334
  {
334
- static const bool single_value = true;
335
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
335
336
 
336
337
  inline explicit insert_emplace_proxy(typename boost::container::allocator_traits<Allocator>::value_type &&v)
337
338
  : insert_move_proxy<Allocator>(v)
@@ -348,7 +349,7 @@ struct insert_emplace_proxy<Allocator
348
349
  : public insert_copy_proxy<Allocator>
349
350
  {
350
351
 
351
- static const bool single_value = true;
352
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
352
353
 
353
354
  inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v)
354
355
  : insert_copy_proxy<Allocator>(v)
@@ -359,7 +360,7 @@ template<class Allocator>
359
360
  struct insert_emplace_proxy<Allocator, typename boost::container::allocator_traits<Allocator>::value_type &>
360
361
  : public insert_copy_proxy<Allocator>
361
362
  {
362
- static const bool single_value = true;
363
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
363
364
 
364
365
  inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v)
365
366
  : insert_copy_proxy<Allocator>(v)
@@ -372,7 +373,7 @@ struct insert_emplace_proxy<Allocator
372
373
  >
373
374
  : public insert_copy_proxy<Allocator>
374
375
  {
375
- static const bool single_value = true;
376
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
376
377
 
377
378
  inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v)
378
379
  : insert_copy_proxy<Allocator>(v)
@@ -396,7 +397,7 @@ struct insert_nonmovable_emplace_proxy##N\
396
397
  typedef boost::container::allocator_traits<Allocator> alloc_traits;\
397
398
  typedef typename alloc_traits::value_type value_type;\
398
399
  \
399
- static const bool single_value = true;\
400
+ BOOST_STATIC_CONSTEXPR bool single_value = true;\
400
401
  \
401
402
  inline explicit insert_nonmovable_emplace_proxy##N(BOOST_MOVE_UREF##N)\
402
403
  BOOST_MOVE_COLON##N BOOST_MOVE_FWD_INIT##N {}\
@@ -425,7 +426,7 @@ struct insert_emplace_proxy_arg##N\
425
426
  typedef typename base_t::value_type value_type;\
426
427
  typedef boost::container::allocator_traits<Allocator> alloc_traits;\
427
428
  \
428
- static const bool single_value = true;\
429
+ BOOST_STATIC_CONSTEXPR bool single_value = true;\
429
430
  \
430
431
  inline explicit insert_emplace_proxy_arg##N(BOOST_MOVE_UREF##N)\
431
432
  : base_t(BOOST_MOVE_FWD##N){}\
@@ -435,8 +436,8 @@ struct insert_emplace_proxy_arg##N\
435
436
  {\
436
437
  BOOST_ASSERT(n == 1); (void)n;\
437
438
  typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;\
438
- alloc_traits::construct(a, move_detail::force_ptr<value_type *>(&v) BOOST_MOVE_I##N BOOST_MOVE_MFWD##N);\
439
- value_type *vp = move_detail::force_ptr<value_type *>(&v);\
439
+ alloc_traits::construct(a, (value_type*)&v BOOST_MOVE_I##N BOOST_MOVE_MFWD##N);\
440
+ value_type *vp = move_detail::launder_cast<value_type *>(&v);\
440
441
  BOOST_CONTAINER_TRY{\
441
442
  *p = ::boost::move(*vp);\
442
443
  }\
@@ -459,7 +460,7 @@ template<class Allocator>
459
460
  struct insert_emplace_proxy_arg1<Allocator, ::boost::rv<typename boost::container::allocator_traits<Allocator>::value_type> >
460
461
  : public insert_move_proxy<Allocator>
461
462
  {
462
- static const bool single_value = true;
463
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
463
464
 
464
465
  inline explicit insert_emplace_proxy_arg1(typename boost::container::allocator_traits<Allocator>::value_type &v)
465
466
  : insert_move_proxy<Allocator>(v)
@@ -470,7 +471,7 @@ template<class Allocator>
470
471
  struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator_traits<Allocator>::value_type>
471
472
  : public insert_copy_proxy<Allocator>
472
473
  {
473
- static const bool single_value = true;
474
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
474
475
 
475
476
  inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
476
477
  : insert_copy_proxy<Allocator>(v)
@@ -484,7 +485,7 @@ template<class Allocator>
484
485
  struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator_traits<Allocator>::value_type>
485
486
  : public insert_move_proxy<Allocator>
486
487
  {
487
- static const bool single_value = true;
488
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
488
489
 
489
490
  inline explicit insert_emplace_proxy_arg1(typename boost::container::allocator_traits<Allocator>::value_type &&v)
490
491
  : insert_move_proxy<Allocator>(v)
@@ -500,7 +501,7 @@ struct insert_emplace_proxy_arg1<Allocator
500
501
  >
501
502
  : public insert_copy_proxy<Allocator>
502
503
  {
503
- static const bool single_value = true;
504
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
504
505
 
505
506
  inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
506
507
  : insert_copy_proxy<Allocator>(v)
@@ -511,7 +512,7 @@ template<class Allocator>
511
512
  struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator_traits<Allocator>::value_type &>
512
513
  : public insert_copy_proxy<Allocator>
513
514
  {
514
- static const bool single_value = true;
515
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
515
516
 
516
517
  inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
517
518
  : insert_copy_proxy<Allocator>(v)
@@ -524,7 +525,7 @@ struct insert_emplace_proxy_arg1<Allocator
524
525
  >
525
526
  : public insert_copy_proxy<Allocator>
526
527
  {
527
- static const bool single_value = true;
528
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
528
529
 
529
530
  inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
530
531
  : insert_copy_proxy<Allocator>(v)
@@ -42,13 +42,13 @@ enum allocation_type_v
42
42
 
43
43
  typedef unsigned int allocation_type;
44
44
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
45
- static const allocation_type allocate_new = (allocation_type)allocate_new_v;
46
- static const allocation_type expand_fwd = (allocation_type)expand_fwd_v;
47
- static const allocation_type expand_bwd = (allocation_type)expand_bwd_v;
48
- static const allocation_type shrink_in_place = (allocation_type)shrink_in_place_v;
49
- static const allocation_type try_shrink_in_place= (allocation_type)try_shrink_in_place_v;
50
- static const allocation_type nothrow_allocation = (allocation_type)nothrow_allocation_v;
51
- static const allocation_type zero_memory = (allocation_type)zero_memory_v;
45
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type allocate_new = (allocation_type)allocate_new_v;
46
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type expand_fwd = (allocation_type)expand_fwd_v;
47
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type expand_bwd = (allocation_type)expand_bwd_v;
48
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type shrink_in_place = (allocation_type)shrink_in_place_v;
49
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type try_shrink_in_place= (allocation_type)try_shrink_in_place_v;
50
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type nothrow_allocation = (allocation_type)nothrow_allocation_v;
51
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type zero_memory = (allocation_type)zero_memory_v;
52
52
 
53
53
  } //namespace container {
54
54
  } //namespace boost {
@@ -74,11 +74,11 @@ class block_list_base
74
74
  {
75
75
  list_node m_list;
76
76
 
77
- static const std::size_t MaxAlignMinus1 = memory_resource::max_align-1u;
77
+ BOOST_STATIC_CONSTEXPR std::size_t MaxAlignMinus1 = memory_resource::max_align-1u;
78
78
 
79
79
  public:
80
80
 
81
- static const std::size_t header_size = std::size_t(sizeof(DerivedFromBlockListHeader) + MaxAlignMinus1) & std::size_t(~MaxAlignMinus1);
81
+ BOOST_STATIC_CONSTEXPR std::size_t header_size = std::size_t(sizeof(DerivedFromBlockListHeader) + MaxAlignMinus1) & std::size_t(~MaxAlignMinus1);
82
82
 
83
83
  explicit block_list_base()
84
84
  { list_algo::init_header(&m_list); }
@@ -68,11 +68,11 @@ class block_slist_base
68
68
  {
69
69
  slist_node m_slist;
70
70
 
71
- static const std::size_t MaxAlignMinus1 = memory_resource::max_align-1u;
71
+ BOOST_STATIC_CONSTEXPR std::size_t MaxAlignMinus1 = memory_resource::max_align-1u;
72
72
 
73
73
  public:
74
74
 
75
- static const std::size_t header_size = std::size_t(sizeof(DerivedFromBlockSlistHeader) + MaxAlignMinus1) & std::size_t(~MaxAlignMinus1);
75
+ BOOST_STATIC_CONSTEXPR std::size_t header_size = std::size_t(sizeof(DerivedFromBlockSlistHeader) + MaxAlignMinus1) & std::size_t(~MaxAlignMinus1);
76
76
 
77
77
  explicit block_slist_base()
78
78
  { slist_algo::init_header(&m_slist); }
@@ -24,6 +24,7 @@
24
24
  #include <boost/container/allocator_traits.hpp>
25
25
  #include <boost/container/detail/iterators.hpp>
26
26
  #include <boost/container/detail/value_init.hpp>
27
+ #include <boost/container/detail/is_pair.hpp>
27
28
 
28
29
  namespace boost {
29
30
  namespace container {
@@ -62,9 +63,42 @@ BOOST_CONTAINER_FORCEINLINE void construct_in_place(Allocator &a, T *dest, empla
62
63
 
63
64
  //Assignment
64
65
 
66
+ template<class T, class U>
67
+ BOOST_CONTAINER_FORCEINLINE
68
+ typename dtl::disable_if_c
69
+ < dtl::is_pair<typename dtl::remove_reference<T>::type>::value
70
+ && dtl::is_pair<typename dtl::remove_reference<U>::type>::value
71
+ , void>::type
72
+ assign_in_place_ref(T &t, BOOST_FWD_REF(U) u)
73
+ { t = ::boost::forward<U>(u); }
74
+
75
+ template<class T, class U>
76
+ BOOST_CONTAINER_FORCEINLINE
77
+ typename dtl::enable_if_c
78
+ < dtl::is_pair<typename dtl::remove_reference<T>::type>::value
79
+ && dtl::is_pair<typename dtl::remove_reference<U>::type>::value
80
+ , void>::type
81
+ assign_in_place_ref(T &t, const U &u)
82
+ {
83
+ assign_in_place_ref(t.first, u.first);
84
+ assign_in_place_ref(t.second, u.second);
85
+ }
86
+
87
+ template<class T, class U>
88
+ BOOST_CONTAINER_FORCEINLINE
89
+ typename dtl::enable_if_c
90
+ < dtl::is_pair<typename dtl::remove_reference<T>::type>::value
91
+ && dtl::is_pair<typename dtl::remove_reference<U>::type>::value
92
+ , void>::type
93
+ assign_in_place_ref(T &t, BOOST_RV_REF(U) u)
94
+ {
95
+ assign_in_place_ref(t.first, ::boost::move(u.first));
96
+ assign_in_place_ref(t.second, ::boost::move(u.second));
97
+ }
98
+
65
99
  template<class DstIt, class InpIt>
66
100
  BOOST_CONTAINER_FORCEINLINE void assign_in_place(DstIt dest, InpIt source)
67
- { *dest = *source; }
101
+ { assign_in_place_ref(*dest, *source); }
68
102
 
69
103
  template<class DstIt, class U>
70
104
  BOOST_CONTAINER_FORCEINLINE void assign_in_place(DstIt dest, value_init_construct_iterator<U>)
@@ -50,7 +50,7 @@
50
50
  # pragma GCC diagnostic ignored "-Wstringop-overflow"
51
51
  # endif
52
52
  //GCC 12 seems a bit confused about array access error with small_vector
53
- # if defined(BOOST_GCC) && ((BOOST_GCC >= 120000) && (BOOST_GCC < 130000))
53
+ # if defined(BOOST_GCC) && (BOOST_GCC >= 110000)
54
54
  # pragma GCC diagnostic ignored "-Wstringop-overread"
55
55
  # pragma GCC diagnostic ignored "-Wstringop-overflow"
56
56
  # endif
@@ -64,7 +64,7 @@ namespace dtl {
64
64
  template<class I>
65
65
  struct are_elements_contiguous
66
66
  {
67
- static const bool value = false;
67
+ BOOST_STATIC_CONSTEXPR bool value = false;
68
68
  };
69
69
 
70
70
  /////////////////////////
@@ -74,7 +74,7 @@ struct are_elements_contiguous
74
74
  template<class T>
75
75
  struct are_elements_contiguous<T*>
76
76
  {
77
- static const bool value = true;
77
+ BOOST_STATIC_CONSTEXPR bool value = true;
78
78
  };
79
79
 
80
80
  /////////////////////////
@@ -115,7 +115,7 @@ namespace dtl {
115
115
  template <class Pointer, bool IsConst>
116
116
  struct are_elements_contiguous<boost::container::vec_iterator<Pointer, IsConst> >
117
117
  {
118
- static const bool value = true;
118
+ BOOST_STATIC_CONSTEXPR bool value = true;
119
119
  };
120
120
 
121
121
 
@@ -126,7 +126,7 @@ struct are_elements_contiguous<boost::container::vec_iterator<Pointer, IsConst>
126
126
  template <class PointedType, class DifferenceType, class OffsetType, std::size_t OffsetAlignment>
127
127
  struct are_elements_contiguous< ::boost::interprocess::offset_ptr<PointedType, DifferenceType, OffsetType, OffsetAlignment> >
128
128
  {
129
- static const bool value = true;
129
+ BOOST_STATIC_CONSTEXPR bool value = true;
130
130
  };
131
131
 
132
132
  template <typename I, typename O>
@@ -185,20 +185,20 @@ private:
185
185
  template <class U> static two test(int, ...);
186
186
  template <class U> static char test(int, const wrapper<U::single_value>*);
187
187
  public:
188
- static const bool value = sizeof(test<T>(0, 0)) == 1;
188
+ BOOST_STATIC_CONSTEXPR bool value = sizeof(test<T>(0, 0)) == 1;
189
189
  void dummy() {}
190
190
  };
191
191
 
192
192
  template<class InsertionProxy, bool = has_single_value<InsertionProxy>::value>
193
193
  struct is_single_value_proxy_impl
194
194
  {
195
- static const bool value = InsertionProxy::single_value;
195
+ BOOST_STATIC_CONSTEXPR bool value = InsertionProxy::single_value;
196
196
  };
197
197
 
198
198
  template<class InsertionProxy>
199
199
  struct is_single_value_proxy_impl<InsertionProxy, false>
200
200
  {
201
- static const bool value = false;
201
+ BOOST_STATIC_CONSTEXPR bool value = false;
202
202
  };
203
203
 
204
204
  template<class InsertionProxy>
@@ -293,7 +293,7 @@ template <typename O>
293
293
  struct is_memzero_initializable
294
294
  {
295
295
  typedef typename ::boost::container::iterator_traits<O>::value_type value_type;
296
- static const bool value = are_elements_contiguous<O>::value &&
296
+ BOOST_STATIC_CONSTEXPR bool value = are_elements_contiguous<O>::value &&
297
297
  ( dtl::is_integral<value_type>::value || dtl::is_enum<value_type>::value
298
298
  #if defined(BOOST_CONTAINER_MEMZEROED_POINTER_IS_NULL)
299
299
  || dtl::is_pointer<value_type>::value
@@ -1111,7 +1111,7 @@ inline typename dtl::disable_if_memtransfer_copy_assignable<F, G, void>::type
1111
1111
  boost::container::destroy_alloc_n(a, large_range_f, std::size_t(n_j - n_i));
1112
1112
  }
1113
1113
 
1114
- static const std::size_t DeepSwapAllocNMaxStorage = std::size_t(1) << std::size_t(11); //2K bytes
1114
+ BOOST_CONTAINER_CONSTANT_VAR std::size_t DeepSwapAllocNMaxStorage = std::size_t(1) << std::size_t(11); //2K bytes
1115
1115
 
1116
1116
  template
1117
1117
  <std::size_t MaxTmpBytes
@@ -1496,8 +1496,8 @@ void expand_backward_forward_and_insert_alloc_move_backward
1496
1496
  {
1497
1497
  typedef std::size_t size_type;
1498
1498
  typedef typename allocator_traits<Allocator>::value_type value_type;
1499
- static const bool trivial_dctr_after_move = has_trivial_destructor_after_move<value_type>::value;
1500
- static const bool trivial_dctr = dtl::is_trivially_destructible<value_type>::value;
1499
+ BOOST_STATIC_CONSTEXPR bool trivial_dctr_after_move = has_trivial_destructor_after_move<value_type>::value;
1500
+ BOOST_STATIC_CONSTEXPR bool trivial_dctr = dtl::is_trivially_destructible<value_type>::value;
1501
1501
 
1502
1502
  typedef typename dtl::if_c
1503
1503
  <trivial_dctr
@@ -1796,8 +1796,8 @@ inline void expand_backward_forward_and_insert_alloc_move_forward
1796
1796
  {
1797
1797
  typedef std::size_t size_type;
1798
1798
  typedef typename allocator_traits<Allocator>::value_type value_type;
1799
- static const bool trivial_dctr_after_move = has_trivial_destructor_after_move<value_type>::value;
1800
- static const bool trivial_dctr = dtl::is_trivially_destructible<value_type>::value;
1799
+ BOOST_STATIC_CONSTEXPR bool trivial_dctr_after_move = has_trivial_destructor_after_move<value_type>::value;
1800
+ BOOST_STATIC_CONSTEXPR bool trivial_dctr = dtl::is_trivially_destructible<value_type>::value;
1801
1801
 
1802
1802
  typedef typename dtl::if_c
1803
1803
  <trivial_dctr
@@ -62,7 +62,7 @@ namespace dtl {
62
62
  template<class X>
63
63
  static no_type test(...);
64
64
 
65
- static const bool value = sizeof(test<T>(0)) == sizeof(yes_type);
65
+ BOOST_STATIC_CONSTEXPR bool value = sizeof(test<T>(0)) == sizeof(yes_type);
66
66
  };
67
67
 
68
68
  template <class T, class InnerAlloc, class ...Args>