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
@@ -5,21 +5,24 @@
5
5
 
6
6
  #ifndef UUID_274DA366004E11DCB1DDFE2E56D89593
7
7
  #define UUID_274DA366004E11DCB1DDFE2E56D89593
8
- #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9
- #pragma GCC system_header
10
- #endif
11
- #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
12
- #pragma warning(push,1)
13
- #endif
8
+
9
+ #include <boost/config.hpp>
14
10
 
15
11
  #ifdef BOOST_EXCEPTION_MINI_BOOST
16
12
  #include <memory>
17
13
  namespace boost { namespace exception_detail { using std::shared_ptr; } }
18
14
  #else
19
- namespace boost { template <class T> class shared_ptr; };
15
+ namespace boost { template <class T> class shared_ptr; }
20
16
  namespace boost { namespace exception_detail { using boost::shared_ptr; } }
21
17
  #endif
22
18
 
19
+ #if defined(__GNUC__) && (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
20
+ #pragma GCC system_header
21
+ #endif
22
+ #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
23
+ #pragma warning(push,1)
24
+ #endif
25
+
23
26
  namespace
24
27
  boost
25
28
  {
@@ -140,17 +143,9 @@ boost
140
143
  }
141
144
  };
142
145
 
143
- #if defined(__GNUC__)
144
- # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
145
- # pragma GCC visibility push (default)
146
- # endif
147
- #endif
148
- class exception;
149
- #if defined(__GNUC__)
150
- # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
151
- # pragma GCC visibility pop
152
- # endif
153
- #endif
146
+ class
147
+ BOOST_SYMBOL_VISIBLE
148
+ exception;
154
149
 
155
150
  namespace
156
151
  exception_detail
@@ -216,12 +211,8 @@ boost
216
211
  E const & set_info( E const &, throw_line const & );
217
212
  }
218
213
 
219
- #if defined(__GNUC__)
220
- # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
221
- # pragma GCC visibility push (default)
222
- # endif
223
- #endif
224
214
  class
215
+ BOOST_SYMBOL_VISIBLE
225
216
  exception
226
217
  {
227
218
  //<N3757>
@@ -293,11 +284,6 @@ boost
293
284
  mutable char const * throw_file_;
294
285
  mutable int throw_line_;
295
286
  };
296
- #if defined(__GNUC__)
297
- # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
298
- # pragma GCC visibility pop
299
- # endif
300
- #endif
301
287
 
302
288
  inline
303
289
  exception::
@@ -338,13 +324,9 @@ boost
338
324
  namespace
339
325
  exception_detail
340
326
  {
341
- #if defined(__GNUC__)
342
- # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
343
- # pragma GCC visibility push (default)
344
- # endif
345
- #endif
346
327
  template <class T>
347
328
  struct
329
+ BOOST_SYMBOL_VISIBLE
348
330
  error_info_injector:
349
331
  public T,
350
332
  public exception
@@ -359,11 +341,6 @@ boost
359
341
  {
360
342
  }
361
343
  };
362
- #if defined(__GNUC__)
363
- # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
364
- # pragma GCC visibility pop
365
- # endif
366
- #endif
367
344
 
368
345
  struct large_size { char c[256]; };
369
346
  large_size dispatch_boost_exception( exception const * );
@@ -411,12 +388,8 @@ boost
411
388
  namespace
412
389
  exception_detail
413
390
  {
414
- #if defined(__GNUC__)
415
- # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
416
- # pragma GCC visibility push (default)
417
- # endif
418
- #endif
419
391
  class
392
+ BOOST_SYMBOL_VISIBLE
420
393
  clone_base
421
394
  {
422
395
  public:
@@ -429,11 +402,6 @@ boost
429
402
  {
430
403
  }
431
404
  };
432
- #if defined(__GNUC__)
433
- # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
434
- # pragma GCC visibility pop
435
- # endif
436
- #endif
437
405
 
438
406
  inline
439
407
  void
@@ -454,13 +422,9 @@ boost
454
422
  {
455
423
  }
456
424
 
457
- #if defined(__GNUC__)
458
- # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
459
- # pragma GCC visibility push (default)
460
- # endif
461
- #endif
462
425
  template <class T>
463
426
  class
427
+ BOOST_SYMBOL_VISIBLE
464
428
  clone_impl:
465
429
  public T,
466
430
  public virtual clone_base
@@ -500,11 +464,6 @@ boost
500
464
  }
501
465
  };
502
466
  }
503
- #if defined(__GNUC__)
504
- # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
505
- # pragma GCC visibility pop
506
- # endif
507
- #endif
508
467
 
509
468
  template <class T>
510
469
  inline
@@ -513,6 +472,51 @@ boost
513
472
  {
514
473
  return exception_detail::clone_impl<T>(x);
515
474
  }
475
+
476
+ template <class T>
477
+ struct
478
+ BOOST_SYMBOL_VISIBLE
479
+ wrapexcept:
480
+ public exception_detail::clone_impl<typename exception_detail::enable_error_info_return_type<T>::type>
481
+ {
482
+ typedef exception_detail::clone_impl<typename exception_detail::enable_error_info_return_type<T>::type> base_type;
483
+ public:
484
+ explicit
485
+ wrapexcept( typename exception_detail::enable_error_info_return_type<T>::type const & x ):
486
+ base_type( x )
487
+ {
488
+ }
489
+
490
+ ~wrapexcept() throw()
491
+ {
492
+ }
493
+ };
494
+
495
+ namespace
496
+ exception_detail
497
+ {
498
+ template <class T>
499
+ struct
500
+ remove_error_info_injector
501
+ {
502
+ typedef T type;
503
+ };
504
+
505
+ template <class T>
506
+ struct
507
+ remove_error_info_injector< error_info_injector<T> >
508
+ {
509
+ typedef T type;
510
+ };
511
+
512
+ template <class T>
513
+ inline
514
+ wrapexcept<typename remove_error_info_injector<T>::type>
515
+ enable_both( T const & x )
516
+ {
517
+ return wrapexcept<typename remove_error_info_injector<T>::type>( enable_error_info( x ) );
518
+ }
519
+ }
516
520
  }
517
521
 
518
522
  #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
@@ -23,7 +23,7 @@
23
23
  #include <functional> // unary_function, binary_function
24
24
 
25
25
  #include <boost/preprocessor/iterate.hpp>
26
- #include <boost/detail/workaround.hpp>
26
+ #include <boost/config/workaround.hpp>
27
27
 
28
28
  // Include the prologue here so that the use of file-level iteration
29
29
  // in anything that may be included by function_template.hpp doesn't break
@@ -26,13 +26,13 @@
26
26
  #include <boost/type_traits/is_volatile.hpp>
27
27
  #include <boost/type_traits/composite_traits.hpp>
28
28
  #include <boost/ref.hpp>
29
- #include <boost/mpl/if.hpp>
30
- #include <boost/detail/workaround.hpp>
29
+ #include <boost/type_traits/conditional.hpp>
30
+ #include <boost/config/workaround.hpp>
31
31
  #include <boost/type_traits/alignment_of.hpp>
32
32
  #ifndef BOOST_NO_SFINAE
33
- # include "boost/utility/enable_if.hpp"
33
+ #include <boost/type_traits/enable_if.hpp>
34
34
  #else
35
- # include "boost/mpl/bool.hpp"
35
+ #include <boost/type_traits/integral_constant.hpp>
36
36
  #endif
37
37
  #include <boost/function_equal.hpp>
38
38
  #include <boost/function/function_fwd.hpp>
@@ -50,7 +50,7 @@
50
50
  #endif // __ICL etc
51
51
 
52
52
  # define BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor,Type) \
53
- typename ::boost::enable_if_c< \
53
+ typename ::boost::enable_if_< \
54
54
  !(::boost::is_integral<Functor>::value), \
55
55
  Type>::type
56
56
 
@@ -101,7 +101,7 @@ namespace boost {
101
101
  } obj_ref;
102
102
  };
103
103
 
104
- union function_buffer
104
+ union BOOST_SYMBOL_VISIBLE function_buffer
105
105
  {
106
106
  // Type-specific union members
107
107
  mutable function_buffer_members members;
@@ -152,15 +152,15 @@ namespace boost {
152
152
  template<typename F>
153
153
  class get_function_tag
154
154
  {
155
- typedef typename mpl::if_c<(is_pointer<F>::value),
155
+ typedef typename conditional<(is_pointer<F>::value),
156
156
  function_ptr_tag,
157
157
  function_obj_tag>::type ptr_or_obj_tag;
158
158
 
159
- typedef typename mpl::if_c<(is_member_pointer<F>::value),
159
+ typedef typename conditional<(is_member_pointer<F>::value),
160
160
  member_ptr_tag,
161
161
  ptr_or_obj_tag>::type ptr_or_obj_or_mem_tag;
162
162
 
163
- typedef typename mpl::if_c<(is_reference_wrapper<F>::value),
163
+ typedef typename conditional<(is_reference_wrapper<F>::value),
164
164
  function_obj_ref_tag,
165
165
  ptr_or_obj_or_mem_tag>::type or_ref_tag;
166
166
 
@@ -328,7 +328,7 @@ namespace boost {
328
328
  // Function objects that fit in the small-object buffer.
329
329
  static inline void
330
330
  manager(const function_buffer& in_buffer, function_buffer& out_buffer,
331
- functor_manager_operation_type op, mpl::true_)
331
+ functor_manager_operation_type op, true_type)
332
332
  {
333
333
  functor_manager_common<Functor>::manage_small(in_buffer,out_buffer,op);
334
334
  }
@@ -336,7 +336,7 @@ namespace boost {
336
336
  // Function objects that require heap allocation
337
337
  static inline void
338
338
  manager(const function_buffer& in_buffer, function_buffer& out_buffer,
339
- functor_manager_operation_type op, mpl::false_)
339
+ functor_manager_operation_type op, false_type)
340
340
  {
341
341
  if (op == clone_functor_tag) {
342
342
  // Clone the functor
@@ -377,7 +377,7 @@ namespace boost {
377
377
  functor_manager_operation_type op, function_obj_tag)
378
378
  {
379
379
  manager(in_buffer, out_buffer, op,
380
- mpl::bool_<(function_allows_small_object_optimization<functor_type>::value)>());
380
+ integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>());
381
381
  }
382
382
 
383
383
  // For member pointers, we use the small-object optimization buffer.
@@ -385,7 +385,7 @@ namespace boost {
385
385
  manager(const function_buffer& in_buffer, function_buffer& out_buffer,
386
386
  functor_manager_operation_type op, member_ptr_tag)
387
387
  {
388
- manager(in_buffer, out_buffer, op, mpl::true_());
388
+ manager(in_buffer, out_buffer, op, true_type());
389
389
  }
390
390
 
391
391
  public:
@@ -427,7 +427,7 @@ namespace boost {
427
427
  // Function objects that fit in the small-object buffer.
428
428
  static inline void
429
429
  manager(const function_buffer& in_buffer, function_buffer& out_buffer,
430
- functor_manager_operation_type op, mpl::true_)
430
+ functor_manager_operation_type op, true_type)
431
431
  {
432
432
  functor_manager_common<Functor>::manage_small(in_buffer,out_buffer,op);
433
433
  }
@@ -435,7 +435,7 @@ namespace boost {
435
435
  // Function objects that require heap allocation
436
436
  static inline void
437
437
  manager(const function_buffer& in_buffer, function_buffer& out_buffer,
438
- functor_manager_operation_type op, mpl::false_)
438
+ functor_manager_operation_type op, false_type)
439
439
  {
440
440
  typedef functor_wrapper<Functor,Allocator> functor_wrapper_type;
441
441
  #if defined(BOOST_NO_CXX11_ALLOCATOR)
@@ -499,7 +499,7 @@ namespace boost {
499
499
  functor_manager_operation_type op, function_obj_tag)
500
500
  {
501
501
  manager(in_buffer, out_buffer, op,
502
- mpl::bool_<(function_allows_small_object_optimization<functor_type>::value)>());
502
+ integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>());
503
503
  }
504
504
 
505
505
  public:
@@ -530,24 +530,24 @@ namespace boost {
530
530
  #ifdef BOOST_NO_SFINAE
531
531
  // These routines perform comparisons between a Boost.Function
532
532
  // object and an arbitrary function object (when the last
533
- // parameter is mpl::bool_<false>) or against zero (when the
534
- // last parameter is mpl::bool_<true>). They are only necessary
533
+ // parameter is false_type) or against zero (when the
534
+ // last parameter is true_type). They are only necessary
535
535
  // for compilers that don't support SFINAE.
536
536
  template<typename Function, typename Functor>
537
537
  bool
538
- compare_equal(const Function& f, const Functor&, int, mpl::bool_<true>)
538
+ compare_equal(const Function& f, const Functor&, int, true_type)
539
539
  { return f.empty(); }
540
540
 
541
541
  template<typename Function, typename Functor>
542
542
  bool
543
543
  compare_not_equal(const Function& f, const Functor&, int,
544
- mpl::bool_<true>)
544
+ true_type)
545
545
  { return !f.empty(); }
546
546
 
547
547
  template<typename Function, typename Functor>
548
548
  bool
549
549
  compare_equal(const Function& f, const Functor& g, long,
550
- mpl::bool_<false>)
550
+ false_type)
551
551
  {
552
552
  if (const Functor* fp = f.template target<Functor>())
553
553
  return function_equal(*fp, g);
@@ -557,7 +557,7 @@ namespace boost {
557
557
  template<typename Function, typename Functor>
558
558
  bool
559
559
  compare_equal(const Function& f, const reference_wrapper<Functor>& g,
560
- int, mpl::bool_<false>)
560
+ int, false_type)
561
561
  {
562
562
  if (const Functor* fp = f.template target<Functor>())
563
563
  return fp == g.get_pointer();
@@ -567,7 +567,7 @@ namespace boost {
567
567
  template<typename Function, typename Functor>
568
568
  bool
569
569
  compare_not_equal(const Function& f, const Functor& g, long,
570
- mpl::bool_<false>)
570
+ false_type)
571
571
  {
572
572
  if (const Functor* fp = f.template target<Functor>())
573
573
  return !function_equal(*fp, g);
@@ -578,7 +578,7 @@ namespace boost {
578
578
  bool
579
579
  compare_not_equal(const Function& f,
580
580
  const reference_wrapper<Functor>& g, int,
581
- mpl::bool_<false>)
581
+ false_type)
582
582
  {
583
583
  if (const Functor* fp = f.template target<Functor>())
584
584
  return fp != g.get_pointer();
@@ -710,7 +710,7 @@ public: // should be protected, but GCC 2.95.3 will fail to allow access
710
710
  * The bad_function_call exception class is thrown when a boost::function
711
711
  * object is invoked
712
712
  */
713
- class bad_function_call : public std::runtime_error
713
+ class BOOST_SYMBOL_VISIBLE bad_function_call : public std::runtime_error
714
714
  {
715
715
  public:
716
716
  bad_function_call() : std::runtime_error("call to empty boost::function") {}
@@ -750,28 +750,28 @@ inline bool operator!=(detail::function::useless_clear_type*,
750
750
  template<typename Functor>
751
751
  inline bool operator==(const function_base& f, Functor g)
752
752
  {
753
- typedef mpl::bool_<(is_integral<Functor>::value)> integral;
753
+ typedef integral_constant<bool, (is_integral<Functor>::value)> integral;
754
754
  return detail::function::compare_equal(f, g, 0, integral());
755
755
  }
756
756
 
757
757
  template<typename Functor>
758
758
  inline bool operator==(Functor g, const function_base& f)
759
759
  {
760
- typedef mpl::bool_<(is_integral<Functor>::value)> integral;
760
+ typedef integral_constant<bool, (is_integral<Functor>::value)> integral;
761
761
  return detail::function::compare_equal(f, g, 0, integral());
762
762
  }
763
763
 
764
764
  template<typename Functor>
765
765
  inline bool operator!=(const function_base& f, Functor g)
766
766
  {
767
- typedef mpl::bool_<(is_integral<Functor>::value)> integral;
767
+ typedef integral_constant<bool, (is_integral<Functor>::value)> integral;
768
768
  return detail::function::compare_not_equal(f, g, 0, integral());
769
769
  }
770
770
 
771
771
  template<typename Functor>
772
772
  inline bool operator!=(Functor g, const function_base& f)
773
773
  {
774
- typedef mpl::bool_<(is_integral<Functor>::value)> integral;
774
+ typedef integral_constant<bool, (is_integral<Functor>::value)> integral;
775
775
  return detail::function::compare_not_equal(f, g, 0, integral());
776
776
  }
777
777
  #else
@@ -11,7 +11,7 @@
11
11
  // Note: this header is a header template and must NOT have multiple-inclusion
12
12
  // protection.
13
13
  #include <boost/function/detail/prologue.hpp>
14
- #include <boost/detail/no_exceptions_support.hpp>
14
+ #include <boost/core/no_exceptions_support.hpp>
15
15
 
16
16
  #if defined(BOOST_MSVC)
17
17
  # pragma warning( push )
@@ -29,8 +29,7 @@
29
29
  #ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
30
30
  # define BOOST_FUNCTION_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, a)
31
31
  #else
32
- # include <boost/move/utility_core.hpp>
33
- # define BOOST_FUNCTION_ARG(J,I,D) ::boost::forward< BOOST_PP_CAT(T,I) >(BOOST_PP_CAT(a,I))
32
+ # define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
34
33
  # define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
35
34
  #endif
36
35
 
@@ -240,7 +239,7 @@ namespace boost {
240
239
  >
241
240
  struct BOOST_FUNCTION_GET_FUNCTION_INVOKER
242
241
  {
243
- typedef typename mpl::if_c<(is_void<R>::value),
242
+ typedef typename conditional<(is_void<R>::value),
244
243
  BOOST_FUNCTION_VOID_FUNCTION_INVOKER<
245
244
  FunctionPtr,
246
245
  R BOOST_FUNCTION_COMMA
@@ -261,7 +260,7 @@ namespace boost {
261
260
  >
262
261
  struct BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
263
262
  {
264
- typedef typename mpl::if_c<(is_void<R>::value),
263
+ typedef typename conditional<(is_void<R>::value),
265
264
  BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER<
266
265
  FunctionObj,
267
266
  R BOOST_FUNCTION_COMMA
@@ -282,7 +281,7 @@ namespace boost {
282
281
  >
283
282
  struct BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
284
283
  {
285
- typedef typename mpl::if_c<(is_void<R>::value),
284
+ typedef typename conditional<(is_void<R>::value),
286
285
  BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER<
287
286
  FunctionObj,
288
287
  R BOOST_FUNCTION_COMMA
@@ -305,7 +304,7 @@ namespace boost {
305
304
  >
306
305
  struct BOOST_FUNCTION_GET_MEMBER_INVOKER
307
306
  {
308
- typedef typename mpl::if_c<(is_void<R>::value),
307
+ typedef typename conditional<(is_void<R>::value),
309
308
  BOOST_FUNCTION_VOID_MEMBER_INVOKER<
310
309
  MemberPtr,
311
310
  R BOOST_FUNCTION_COMMA
@@ -350,9 +349,8 @@ namespace boost {
350
349
  typedef functor_manager<FunctionPtr> manager_type;
351
350
  };
352
351
 
353
- template<typename FunctionPtr,
354
- typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
355
- typename Allocator>
352
+ template<typename FunctionPtr, typename Allocator,
353
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
356
354
  struct apply_a
357
355
  {
358
356
  typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER<
@@ -385,9 +383,8 @@ namespace boost {
385
383
  typedef functor_manager<MemberPtr> manager_type;
386
384
  };
387
385
 
388
- template<typename MemberPtr,
389
- typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
390
- typename Allocator>
386
+ template<typename MemberPtr, typename Allocator,
387
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
391
388
  struct apply_a
392
389
  {
393
390
  typedef typename BOOST_FUNCTION_GET_MEMBER_INVOKER<
@@ -420,9 +417,8 @@ namespace boost {
420
417
  typedef functor_manager<FunctionObj> manager_type;
421
418
  };
422
419
 
423
- template<typename FunctionObj,
424
- typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
425
- typename Allocator>
420
+ template<typename FunctionObj, typename Allocator,
421
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
426
422
  struct apply_a
427
423
  {
428
424
  typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER<
@@ -454,9 +450,8 @@ namespace boost {
454
450
  typedef reference_manager<typename RefWrapper::type> manager_type;
455
451
  };
456
452
 
457
- template<typename RefWrapper,
458
- typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
459
- typename Allocator>
453
+ template<typename RefWrapper, typename Allocator,
454
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
460
455
  struct apply_a
461
456
  {
462
457
  typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER<
@@ -567,27 +562,27 @@ namespace boost {
567
562
  // Assign to a function object using the small object optimization
568
563
  template<typename FunctionObj>
569
564
  void
570
- assign_functor(FunctionObj f, function_buffer& functor, mpl::true_) const
565
+ assign_functor(FunctionObj f, function_buffer& functor, true_type) const
571
566
  {
572
567
  new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
573
568
  }
574
569
  template<typename FunctionObj,typename Allocator>
575
570
  void
576
- assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, mpl::true_) const
571
+ assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
577
572
  {
578
- assign_functor(f,functor,mpl::true_());
573
+ assign_functor(f,functor,true_type());
579
574
  }
580
575
 
581
576
  // Assign to a function object allocated on the heap.
582
577
  template<typename FunctionObj>
583
578
  void
584
- assign_functor(FunctionObj f, function_buffer& functor, mpl::false_) const
579
+ assign_functor(FunctionObj f, function_buffer& functor, false_type) const
585
580
  {
586
581
  functor.members.obj_ptr = new FunctionObj(f);
587
582
  }
588
583
  template<typename FunctionObj,typename Allocator>
589
584
  void
590
- assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, mpl::false_) const
585
+ assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
591
586
  {
592
587
  typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
593
588
  #if defined(BOOST_NO_CXX11_ALLOCATOR)
@@ -615,7 +610,7 @@ namespace boost {
615
610
  {
616
611
  if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
617
612
  assign_functor(f, functor,
618
- mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
613
+ integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
619
614
  return true;
620
615
  } else {
621
616
  return false;
@@ -627,7 +622,7 @@ namespace boost {
627
622
  {
628
623
  if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
629
624
  assign_functor_a(f, functor, a,
630
- mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
625
+ integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
631
626
  return true;
632
627
  } else {
633
628
  return false;
@@ -708,14 +703,14 @@ namespace boost {
708
703
 
709
704
  typedef BOOST_FUNCTION_FUNCTION self_type;
710
705
 
711
- BOOST_FUNCTION_FUNCTION() : function_base() { }
706
+ BOOST_DEFAULTED_FUNCTION(BOOST_FUNCTION_FUNCTION(), : function_base() {})
712
707
 
713
708
  // MSVC chokes if the following two constructors are collapsed into
714
709
  // one with a default parameter.
715
710
  template<typename Functor>
716
711
  BOOST_FUNCTION_FUNCTION(Functor BOOST_FUNCTION_TARGET_FIX(const &) f
717
712
  #ifndef BOOST_NO_SFINAE
718
- ,typename boost::enable_if_c<
713
+ ,typename boost::enable_if_<
719
714
  !(is_integral<Functor>::value),
720
715
  int>::type = 0
721
716
  #endif // BOOST_NO_SFINAE
@@ -727,7 +722,7 @@ namespace boost {
727
722
  template<typename Functor,typename Allocator>
728
723
  BOOST_FUNCTION_FUNCTION(Functor BOOST_FUNCTION_TARGET_FIX(const &) f, Allocator a
729
724
  #ifndef BOOST_NO_SFINAE
730
- ,typename boost::enable_if_c<
725
+ ,typename boost::enable_if_<
731
726
  !(is_integral<Functor>::value),
732
727
  int>::type = 0
733
728
  #endif // BOOST_NO_SFINAE
@@ -776,7 +771,7 @@ namespace boost {
776
771
  // construct.
777
772
  template<typename Functor>
778
773
  #ifndef BOOST_NO_SFINAE
779
- typename boost::enable_if_c<
774
+ typename boost::enable_if_<
780
775
  !(is_integral<Functor>::value),
781
776
  BOOST_FUNCTION_FUNCTION&>::type
782
777
  #else
@@ -904,7 +899,9 @@ namespace boost {
904
899
  if (!f.empty()) {
905
900
  this->vtable = f.vtable;
906
901
  if (this->has_trivial_copy_and_destroy())
907
- this->functor = f.functor;
902
+ // Don't operate on storage directly since union type doesn't relax
903
+ // strict aliasing rules, despite of having member char type.
904
+ std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
908
905
  else
909
906
  get_vtable()->base.manager(f.functor, this->functor,
910
907
  boost::detail::function::clone_functor_tag);
@@ -953,9 +950,8 @@ namespace boost {
953
950
  typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
954
951
  typedef boost::detail::function::BOOST_FUNCTION_GET_INVOKER<tag> get_invoker;
955
952
  typedef typename get_invoker::
956
- template apply_a<Functor, R BOOST_FUNCTION_COMMA
957
- BOOST_FUNCTION_TEMPLATE_ARGS,
958
- Allocator>
953
+ template apply_a<Functor, Allocator, R BOOST_FUNCTION_COMMA
954
+ BOOST_FUNCTION_TEMPLATE_ARGS>
959
955
  handler_type;
960
956
 
961
957
  typedef typename handler_type::invoker_type invoker_type;
@@ -992,7 +988,9 @@ namespace boost {
992
988
  if (!f.empty()) {
993
989
  this->vtable = f.vtable;
994
990
  if (this->has_trivial_copy_and_destroy())
995
- this->functor = f.functor;
991
+ // Don't operate on storage directly since union type doesn't relax
992
+ // strict aliasing rules, despite of having member char type.
993
+ std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
996
994
  else
997
995
  get_vtable()->base.manager(f.functor, this->functor,
998
996
  boost::detail::function::move_functor_tag);
@@ -1042,7 +1040,7 @@ template
1042
1040
  #if BOOST_FUNCTION_NUM_ARGS == 0
1043
1041
  #define BOOST_FUNCTION_PARTIAL_SPEC R (void)
1044
1042
  #else
1045
- #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS,T))
1043
+ #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
1046
1044
  #endif
1047
1045
 
1048
1046
  template<typename R BOOST_FUNCTION_COMMA
@@ -1057,12 +1055,12 @@ class function
1057
1055
 
1058
1056
  public:
1059
1057
 
1060
- function() : base_type() {}
1058
+ BOOST_DEFAULTED_FUNCTION(function(), : base_type() {})
1061
1059
 
1062
1060
  template<typename Functor>
1063
1061
  function(Functor f
1064
1062
  #ifndef BOOST_NO_SFINAE
1065
- ,typename boost::enable_if_c<
1063
+ ,typename boost::enable_if_<
1066
1064
  !(is_integral<Functor>::value),
1067
1065
  int>::type = 0
1068
1066
  #endif
@@ -1073,7 +1071,7 @@ public:
1073
1071
  template<typename Functor,typename Allocator>
1074
1072
  function(Functor f, Allocator a
1075
1073
  #ifndef BOOST_NO_SFINAE
1076
- ,typename boost::enable_if_c<
1074
+ ,typename boost::enable_if_<
1077
1075
  !(is_integral<Functor>::value),
1078
1076
  int>::type = 0
1079
1077
  #endif
@@ -1112,7 +1110,7 @@ public:
1112
1110
 
1113
1111
  template<typename Functor>
1114
1112
  #ifndef BOOST_NO_SFINAE
1115
- typename boost::enable_if_c<
1113
+ typename boost::enable_if_<
1116
1114
  !(is_integral<Functor>::value),
1117
1115
  self_type&>::type
1118
1116
  #else