passenger 5.1.4 → 5.1.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (542) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +9 -0
  3. data/CHANGELOG +9 -0
  4. data/build/cxx_tests.rb +11 -1
  5. data/build/documentation.rb +0 -32
  6. data/build/support/cxx_dependency_map.rb +602 -2
  7. data/build/test_basics.rb +3 -3
  8. data/dev/boost-patches/0001-Patch-boost-thread-so-that-oxt-thread-can-use-it.patch +48 -0
  9. data/dev/boost-patches/0002-Make-boost-thread_interrupted-derive-from-oxt-tracab.patch +33 -0
  10. data/dev/boost-patches/0003-Disable-a-Clang-pragma-to-prevent-warnings-on-OS-X.patch +25 -0
  11. data/dev/ci/README.md +121 -0
  12. data/dev/ci/lib/functions.sh +129 -0
  13. data/dev/ci/lib/set-container-envvars.sh +46 -0
  14. data/dev/ci/lib/setup-container.sh +43 -0
  15. data/dev/ci/run-tests-natively +24 -0
  16. data/dev/ci/run-tests-with-docker +42 -0
  17. data/dev/ci/scripts/debug-console-wrapper.sh +27 -0
  18. data/dev/ci/scripts/docker-entrypoint-stage2.sh +17 -0
  19. data/dev/ci/scripts/docker-entrypoint.sh +17 -0
  20. data/dev/ci/scripts/inituidgid +17 -0
  21. data/dev/ci/scripts/run-tests-natively-stage2.sh +17 -0
  22. data/dev/ci/scripts/setup-host-natively.sh +11 -0
  23. data/dev/ci/setup-host +50 -0
  24. data/dev/ci/tests/apache2/run +6 -0
  25. data/dev/ci/tests/apache2/setup +4 -0
  26. data/dev/ci/tests/cxx/run +9 -0
  27. data/dev/ci/tests/cxx/setup +4 -0
  28. data/dev/ci/tests/nginx-dynamic/run +20 -0
  29. data/dev/ci/tests/nginx-dynamic/setup +4 -0
  30. data/dev/ci/tests/nginx/run +5 -0
  31. data/dev/ci/tests/nginx/setup +4 -0
  32. data/dev/ci/tests/nodejs/run +4 -0
  33. data/dev/ci/tests/nodejs/setup +4 -0
  34. data/dev/ci/tests/ruby/run +4 -0
  35. data/dev/ci/tests/ruby/setup +4 -0
  36. data/dev/ci/tests/source-packaging/run +4 -0
  37. data/dev/ci/tests/source-packaging/setup +4 -0
  38. data/dev/ci/tests/standalone/run +4 -0
  39. data/dev/ci/tests/standalone/setup +4 -0
  40. data/dev/copy_boost_headers +8 -2
  41. data/src/agent/Core/ApiServer.h +11 -5
  42. data/src/agent/Core/Controller.h +12 -46
  43. data/src/agent/Core/Controller/CheckoutSession.cpp +1 -1
  44. data/src/agent/Core/Controller/Config.h +369 -0
  45. data/src/agent/Core/Controller/ForwardResponse.cpp +4 -4
  46. data/src/agent/Core/Controller/Hooks.cpp +15 -3
  47. data/src/agent/Core/Controller/Implementation.cpp +1 -1
  48. data/src/agent/Core/Controller/InitRequest.cpp +28 -39
  49. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +25 -60
  50. data/src/agent/Core/Controller/InternalUtils.cpp +0 -16
  51. data/src/agent/Core/Controller/Miscellaneous.cpp +0 -17
  52. data/src/agent/Core/Controller/Request.h +2 -0
  53. data/src/agent/Core/Controller/SendRequest.cpp +4 -4
  54. data/src/agent/Core/Controller/{StateInspectionAndConfiguration.cpp → StateInspection.cpp} +0 -22
  55. data/src/agent/Core/Controller/TurboCaching.h +11 -10
  56. data/src/agent/Core/CoreMain.cpp +16 -6
  57. data/src/agent/Core/ResponseCache.h +3 -3
  58. data/src/agent/Core/SpawningKit/SmartSpawner.h +9 -3
  59. data/src/agent/Core/SpawningKit/Spawner.h +7 -3
  60. data/src/agent/UstRouter/ApiServer.h +3 -2
  61. data/src/agent/UstRouter/Controller.h +66 -32
  62. data/src/agent/UstRouter/UstRouterMain.cpp +10 -2
  63. data/src/agent/Watchdog/ApiServer.h +3 -2
  64. data/src/agent/Watchdog/WatchdogMain.cpp +3 -1
  65. data/src/apache2_module/ConfigurationCommands.cpp +1 -1
  66. data/src/cxx_supportlib/ConfigKit/Common.h +125 -0
  67. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +34 -0
  68. data/src/cxx_supportlib/ConfigKit/README.md +895 -0
  69. data/src/cxx_supportlib/ConfigKit/Schema.h +331 -0
  70. data/src/cxx_supportlib/ConfigKit/Store.h +385 -0
  71. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +185 -0
  72. data/src/cxx_supportlib/ConfigKit/Utils.h +141 -0
  73. data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +81 -0
  74. data/src/cxx_supportlib/Constants.h +1 -1
  75. data/src/cxx_supportlib/Crypto.cpp +2 -2
  76. data/src/cxx_supportlib/Logging.h +0 -35
  77. data/src/cxx_supportlib/ServerKit/HttpServer.h +35 -16
  78. data/src/cxx_supportlib/ServerKit/Server.h +65 -25
  79. data/src/cxx_supportlib/oxt/macros.hpp +3 -0
  80. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/replace.hpp +0 -2
  81. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +53 -42
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +11 -5
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +13 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +23 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +5 -0
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +3 -2
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +8 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +3 -1
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +2 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +2 -0
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +5 -0
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +2 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +6 -4
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +2 -0
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +3 -1
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +28 -17
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +2 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +2 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +9 -4
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +3 -3
  101. data/src/cxx_supportlib/vendor-modified/boost/bind/arg.hpp +10 -3
  102. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +90 -18
  103. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +2 -2
  104. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +1 -1
  105. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -3
  106. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +2 -0
  107. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +35 -6
  108. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +2 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
  110. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/compaq_cxx.hpp +1 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +3 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +19 -4
  115. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
  117. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +3 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +29 -7
  119. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
  121. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
  122. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +16 -0
  123. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +2 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sgi_mipspro.hpp +1 -1
  126. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +10 -1
  127. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +44 -16
  129. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  130. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +1 -2
  131. data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +1 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/config/select_compiler_config.hpp +21 -21
  133. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +42 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +7 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +40 -7
  136. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +39 -6
  137. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +7 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +7 -0
  139. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +7 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +8 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +7 -0
  142. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +7 -0
  143. data/src/cxx_supportlib/vendor-modified/boost/config/suffix.hpp +33 -4
  144. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +0 -2
  145. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +0 -3
  146. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -27
  147. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +62 -26
  148. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
  149. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +4 -4
  150. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +4 -4
  151. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +2 -0
  152. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +39 -5
  153. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +49 -32
  154. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +175 -7
  155. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +223 -98
  156. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +57 -0
  157. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +88 -41
  158. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +7 -8
  159. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +4 -9
  160. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +45 -18
  161. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +205 -26
  162. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +290 -181
  163. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +24 -19
  165. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +38 -0
  166. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +320 -46
  167. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +91 -18
  168. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -19
  169. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +491 -120
  170. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +4 -4
  171. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +0 -3
  172. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +399 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/deque.hpp +2 -0
  174. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/list.hpp +2 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -0
  179. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/slist.hpp +2 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/small_vector.hpp +2 -0
  181. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/stable_vector.hpp +2 -0
  182. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/string.hpp +2 -0
  183. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/vector.hpp +2 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +101 -20
  185. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +19 -14
  186. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +117 -59
  187. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +8 -6
  188. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +33 -28
  189. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +414 -70
  190. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +1 -0
  191. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +2 -2
  192. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +134 -117
  193. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +202 -99
  194. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +8 -10
  195. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +217 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +29 -27
  197. data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +5 -1
  198. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +13 -13
  199. data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +3 -3
  200. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +2 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -3
  202. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +6 -5
  203. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +2 -2
  204. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_names_put.hpp +8 -7
  205. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_calendar.hpp +2 -1
  206. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +2 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -3
  208. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day_of_year.hpp +3 -2
  209. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +2 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +4 -3
  211. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +27 -7
  212. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +5 -5
  213. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +5 -0
  214. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +4 -4
  215. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +4 -5
  216. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +2 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +5 -4
  218. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/posix_time_zone.hpp +4 -3
  219. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +3 -2
  220. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +2 -2
  222. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +5 -4
  223. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +6 -5
  224. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +4 -0
  225. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +2 -2
  226. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +5 -4
  227. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +2 -1
  228. data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +3 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +13 -0
  230. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +1 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +5 -0
  232. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +11 -0
  233. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +17 -0
  234. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +25 -3
  235. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +2 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +114 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +116 -142
  238. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +57 -69
  239. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/hash_float.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/extensions.hpp +3 -3
  241. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash.hpp +27 -13
  242. data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +4 -2
  243. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +99 -12
  244. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set_hook.hpp +4 -2
  245. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +35 -4
  246. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +37 -6
  247. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +95 -8
  248. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set_hook.hpp +4 -2
  249. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +209 -72
  250. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +86 -20
  251. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +11 -11
  252. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +6 -6
  253. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algo_type.hpp +4 -1
  254. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +58 -45
  255. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +27 -26
  256. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +2 -2
  257. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
  258. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +8 -3
  259. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +4 -3
  260. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +27 -26
  261. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +3 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +4 -2
  263. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +9 -7
  264. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/has_member_function_callable_with.hpp +83 -57
  265. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +30 -30
  266. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +9 -8
  267. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +8 -7
  268. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -15
  269. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +70 -44
  270. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +22 -21
  271. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +7 -6
  272. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +5 -4
  273. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +29 -28
  274. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +33 -12
  275. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +19 -12
  276. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +21 -20
  277. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +4 -3
  278. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +3 -2
  279. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +23 -22
  280. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -22
  281. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +10 -9
  282. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +103 -29
  283. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +15 -0
  284. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +295 -211
  285. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +2 -2
  286. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +20 -7
  287. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +4 -2
  288. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +5 -4
  289. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +4 -4
  290. data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +3 -2
  291. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +4 -4
  292. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +4 -4
  293. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +22 -4
  294. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +36 -4
  295. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +43 -13
  296. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +95 -8
  297. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +4 -2
  298. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +96 -12
  299. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +102 -5
  300. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +48 -4
  301. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +20 -11
  302. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +9 -2
  303. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +95 -8
  304. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +36 -4
  305. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +27 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +167 -23
  307. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +28 -0
  308. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +100 -46
  309. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +5 -4
  310. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -27
  311. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +30 -14
  312. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +35 -36
  314. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +6 -28
  315. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +20 -5
  316. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +4 -2
  317. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +3 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +5 -0
  319. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +11 -7
  320. data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +1 -3
  321. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +5 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +11 -0
  323. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +10 -2
  324. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +40 -7
  325. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +67 -0
  326. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +63 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +2437 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +121 -0
  329. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +127 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +637 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +139 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +155 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -116
  334. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +14 -13
  335. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +17 -1
  336. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +2 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +67 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +227 -32
  339. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +4 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +30 -9
  341. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +12 -0
  342. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +84 -80
  343. data/src/cxx_supportlib/vendor-modified/boost/move/detail/placement_new.hpp +30 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +171 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +14 -20
  346. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
  347. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +14 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +32 -33
  349. data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +2 -1
  350. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +49 -49
  351. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +8 -7
  352. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +17 -16
  353. data/src/cxx_supportlib/vendor-modified/boost/mpl/print.hpp +3 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +1 -1
  355. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +2 -3
  356. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +197 -255
  357. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +1059 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +75 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +116 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +36 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +253 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +196 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +117 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +372 -554
  365. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +12 -1
  366. data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +15 -7
  367. data/src/cxx_supportlib/vendor-modified/boost/pool/pool_alloc.hpp +24 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +9 -2
  369. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +15 -1
  370. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +16 -4
  371. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +3 -3
  372. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +4 -4
  373. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +4 -4
  374. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +1 -1
  375. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +2 -2
  376. data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +20 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/cat.hpp +1 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +6 -6
  379. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +5 -6
  380. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
  381. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/to_list.hpp +12 -0
  382. data/src/cxx_supportlib/vendor-modified/boost/range/const_iterator.hpp +4 -4
  383. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +0 -5
  384. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +16 -16
  385. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +4 -4
  386. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +3 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +102 -87
  388. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +45 -21
  389. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
  390. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +2 -2
  391. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
  392. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +14 -2
  393. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +46 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +5 -2
  395. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +5 -14
  396. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +116 -13
  397. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +34 -0
  398. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +2 -2
  399. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
  400. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
  401. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -0
  402. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -2
  403. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +1004 -159
  404. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +9 -0
  405. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +3 -0
  406. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +4 -58
  407. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +5 -2
  408. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +9 -0
  409. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -8
  410. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +3 -3
  411. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +30 -0
  412. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +3 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +5 -4
  414. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +28 -3
  415. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +187 -0
  416. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +52 -144
  417. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +120 -450
  418. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +2 -1
  419. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +2 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +7 -6
  421. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +70 -8
  422. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +6 -5
  423. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +9 -8
  424. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +3 -3
  425. data/src/cxx_supportlib/vendor-modified/boost/thread/barrier.hpp +5 -4
  426. data/src/cxx_supportlib/vendor-modified/boost/thread/completion_latch.hpp +0 -1
  427. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_views.hpp +0 -11
  428. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +6 -4
  429. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
  430. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +11 -4
  431. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +8 -8
  432. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +1 -1
  433. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +5 -5
  434. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +22 -18
  435. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +163 -55
  436. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/launch.hpp +1 -0
  437. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_all.hpp +1 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/thread/lock_types.hpp +9 -9
  439. data/src/cxx_supportlib/vendor-modified/boost/thread/locks.hpp +1 -0
  440. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +6 -7
  441. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +17 -2
  442. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +2 -2
  443. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +5 -5
  444. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +29 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +23 -18
  446. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +6 -6
  447. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_functors.hpp +19 -4
  448. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +3 -3
  449. data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +1 -1
  450. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +265 -0
  451. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +272 -0
  452. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +300 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +3 -3
  454. data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +6 -6
  455. data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +1 -0
  456. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +9 -3
  457. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/mp_defer.hpp +3 -3
  458. data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +1 -0
  459. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_assign.hpp +2 -1
  460. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_constructor.hpp +2 -1
  461. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +1 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_assign.hpp +2 -1
  463. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_copy.hpp +1 -0
  464. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_destructor.hpp +1 -1
  465. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -0
  466. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +1 -0
  467. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_abstract.hpp +1 -0
  468. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +1 -1
  469. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +1 -0
  470. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +2 -1
  471. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +21 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -0
  473. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +1 -1
  474. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -1
  475. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pod.hpp +1 -0
  476. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +1 -1
  477. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +1 -1
  478. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +2 -1
  479. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +52 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +1 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
  482. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
  483. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
  484. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
  485. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +1 -1
  486. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
  487. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +1 -1
  488. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +40 -6
  489. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4986 -0
  490. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +107 -0
  491. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +105 -0
  492. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +1814 -1255
  493. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -45
  494. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1498 -1161
  495. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -44
  496. data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +2 -2
  497. data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +7 -6
  498. data/src/cxx_supportlib/vendor-modified/boost/utility/compare_pointees.hpp +10 -2
  499. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +39 -22
  500. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +690 -0
  501. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view_fwd.hpp +39 -0
  502. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  503. data/src/helper-scripts/crash-watch.rb +3 -0
  504. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  505. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -0
  506. data/src/ruby_supportlib/phusion_passenger/packaging.rb +2 -12
  507. metadata +77 -38
  508. data/dev/ci/inituidgid +0 -24
  509. data/dev/ci/run_jenkins.sh +0 -70
  510. data/dev/ci/run_travis.sh +0 -314
  511. data/doc/Design and Architecture.html +0 -2421
  512. data/doc/Design and Architecture.txt +0 -511
  513. data/doc/Security of user switching support.html +0 -1833
  514. data/doc/Users guide Apache.html +0 -3101
  515. data/doc/Users guide Apache.idmap.txt +0 -451
  516. data/doc/Users guide Apache.txt +0 -534
  517. data/doc/Users guide Nginx.html +0 -3026
  518. data/doc/Users guide Nginx.idmap.txt +0 -431
  519. data/doc/Users guide Nginx.txt +0 -451
  520. data/doc/Users guide Standalone.html +0 -2092
  521. data/doc/Users guide Standalone.idmap.txt +0 -137
  522. data/doc/Users guide Standalone.txt +0 -81
  523. data/doc/Users guide.html +0 -1606
  524. data/doc/Users guide.txt +0 -8
  525. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -20
  526. data/src/cxx_supportlib/vendor-modified/boost/align/detail/address.hpp +0 -29
  527. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align.hpp +0 -40
  528. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -22
  529. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -29
  530. data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +0 -383
  531. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_allocator.hpp +0 -318
  532. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_count_impl.hpp +0 -67
  533. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_traits.hpp +0 -60
  534. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_utility.hpp +0 -214
  535. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_if_array.hpp +0 -34
  536. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocate.hpp +0 -1128
  537. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/buckets.hpp +0 -928
  538. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/equivalent.hpp +0 -686
  539. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/extract_key.hpp +0 -188
  540. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/table.hpp +0 -873
  541. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unique.hpp +0 -628
  542. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/util.hpp +0 -266
@@ -12,6 +12,8 @@
12
12
  #include <boost/detail/workaround.hpp>
13
13
  #include <boost/thread/detail/platform.hpp>
14
14
 
15
+ //#define BOOST_THREAD_USEFIXES_TIMESPEC
16
+ //#define BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC
15
17
  //#define BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
16
18
  // ATTRIBUTE_MAY_ALIAS
17
19
 
@@ -100,8 +102,8 @@
100
102
  #if !defined BOOST_THREAD_VERSION
101
103
  #define BOOST_THREAD_VERSION 2
102
104
  #else
103
- #if BOOST_THREAD_VERSION!=2 && BOOST_THREAD_VERSION!=3 && BOOST_THREAD_VERSION!=4
104
- #error "BOOST_THREAD_VERSION must be 2, 3 or 4"
105
+ #if BOOST_THREAD_VERSION!=2 && BOOST_THREAD_VERSION!=3 && BOOST_THREAD_VERSION!=4 && BOOST_THREAD_VERSION!=5
106
+ #error "BOOST_THREAD_VERSION must be 2, 3, 4 or 5"
105
107
  #endif
106
108
  #endif
107
109
 
@@ -304,6 +306,13 @@
304
306
 
305
307
  #endif // BOOST_THREAD_VERSION>=4
306
308
 
309
+
310
+ #if BOOST_THREAD_VERSION>=5
311
+ //#define BOOST_THREAD_FUTURE_BLOCKING
312
+ #else
313
+ //#define BOOST_THREAD_FUTURE_BLOCKING
314
+ #define BOOST_THREAD_ASYNC_FUTURE_WAITS
315
+ #endif
307
316
  // INTERRUPTIONS
308
317
  #if ! defined BOOST_THREAD_PROVIDES_INTERRUPTIONS \
309
318
  && ! defined BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
@@ -482,13 +482,20 @@ namespace boost
482
482
  return try_join_until(chrono::steady_clock::now() + rel_time);
483
483
  }
484
484
  #endif
485
+
486
+ #if defined(BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC) && defined(BOOST_THREAD_USEFIXES_TIMESPEC)
487
+ typedef chrono::steady_clock my_clock_t;
488
+ #else
489
+ typedef chrono::system_clock my_clock_t;
490
+ #endif
491
+
485
492
  template <class Clock, class Duration>
486
493
  bool try_join_until(const chrono::time_point<Clock, Duration>& t)
487
494
  {
488
495
  using namespace chrono;
489
496
  bool joined= false;
490
497
  do {
491
- system_clock::time_point s_now = system_clock::now();
498
+ my_clock_t::time_point s_now = my_clock_t::now();
492
499
  typename Clock::duration d = ceil<nanoseconds>(t-Clock::now());
493
500
  if (d <= Clock::duration::zero()) return false; // in case the Clock::time_point t is already reached
494
501
  joined = try_join_until(s_now + d);
@@ -496,10 +503,10 @@ namespace boost
496
503
  return true;
497
504
  }
498
505
  template <class Duration>
499
- bool try_join_until(const chrono::time_point<chrono::system_clock, Duration>& t)
506
+ bool try_join_until(const chrono::time_point<my_clock_t, Duration>& t)
500
507
  {
501
508
  using namespace chrono;
502
- typedef time_point<system_clock, nanoseconds> nano_sys_tmpt;
509
+ typedef time_point<my_clock_t, nanoseconds> nano_sys_tmpt;
503
510
  return try_join_until(nano_sys_tmpt(ceil<nanoseconds>(t.time_since_epoch())));
504
511
  }
505
512
  #endif
@@ -514,7 +521,7 @@ namespace boost
514
521
  //}
515
522
 
516
523
  #ifdef BOOST_THREAD_USES_CHRONO
517
- bool try_join_until(const chrono::time_point<chrono::system_clock, chrono::nanoseconds>& tp)
524
+ bool try_join_until(const chrono::time_point<my_clock_t, chrono::nanoseconds>& tp)
518
525
  {
519
526
  chrono::milliseconds rel_time= chrono::ceil<chrono::milliseconds>(tp-chrono::system_clock::now());
520
527
  return do_try_join_until(rel_time.count());
@@ -42,19 +42,19 @@ namespace boost
42
42
  typedef system::system_error base_type;
43
43
  public:
44
44
  thread_exception()
45
- : base_type(0,system::system_category())
45
+ : base_type(0,system::generic_category())
46
46
  {}
47
47
 
48
48
  thread_exception(int sys_error_code)
49
- : base_type(sys_error_code, system::system_category())
49
+ : base_type(sys_error_code, system::generic_category())
50
50
  {}
51
51
 
52
52
  thread_exception( int ev, const char * what_arg )
53
- : base_type(system::error_code(ev, system::system_category()), what_arg)
53
+ : base_type(system::error_code(ev, system::generic_category()), what_arg)
54
54
  {
55
55
  }
56
56
  thread_exception( int ev, const std::string & what_arg )
57
- : base_type(system::error_code(ev, system::system_category()), what_arg)
57
+ : base_type(system::error_code(ev, system::generic_category()), what_arg)
58
58
  {
59
59
  }
60
60
 
@@ -76,18 +76,18 @@ namespace boost
76
76
  typedef system::system_error base_type;
77
77
  public:
78
78
  condition_error()
79
- : base_type(system::error_code(0, system::system_category()), "Condition error")
79
+ : base_type(system::error_code(0, system::generic_category()), "Condition error")
80
80
  {}
81
81
  condition_error( int ev )
82
- : base_type(system::error_code(ev, system::system_category()), "Condition error")
82
+ : base_type(system::error_code(ev, system::generic_category()), "Condition error")
83
83
  {
84
84
  }
85
85
  condition_error( int ev, const char * what_arg )
86
- : base_type(system::error_code(ev, system::system_category()), what_arg)
86
+ : base_type(system::error_code(ev, system::generic_category()), what_arg)
87
87
  {
88
88
  }
89
89
  condition_error( int ev, const std::string & what_arg )
90
- : base_type(system::error_code(ev, system::system_category()), what_arg)
90
+ : base_type(system::error_code(ev, system::generic_category()), what_arg)
91
91
  {
92
92
  }
93
93
  };
@@ -38,7 +38,7 @@ namespace boost
38
38
  * \par Synchronization
39
39
  * The completion of all the closures happen before the completion of the executor destructor.
40
40
  */
41
- virtual ~executor() {};
41
+ virtual ~executor() {}
42
42
 
43
43
  /**
44
44
  * \par Effects
@@ -32,7 +32,7 @@ namespace boost
32
32
 
33
33
  /// executor is not copyable.
34
34
  BOOST_THREAD_NO_COPYABLE(executor_ref)
35
- executor_ref(Executor& ex) : ex(ex) {}
35
+ executor_ref(Executor& ex_) : ex(ex_) {}
36
36
 
37
37
  /**
38
38
  * \par Effects
@@ -41,7 +41,7 @@ namespace boost
41
41
  * \par Synchronization
42
42
  * The completion of all the closures happen before the completion of the executor destructor.
43
43
  */
44
- ~executor_ref() {};
44
+ ~executor_ref() {}
45
45
 
46
46
  /**
47
47
  * \par Effects
@@ -98,9 +98,9 @@ namespace boost
98
98
  typedef executors::work work;
99
99
 
100
100
  template<typename Executor>
101
- generic_executor_ref(Executor& ex)
102
- //: ex(make_shared<executor_ref<Executor> >(ex)) // todo check why this doesn't works with C++03
103
- : ex( new executor_ref<Executor>(ex) )
101
+ generic_executor_ref(Executor& ex_)
102
+ //: ex(make_shared<executor_ref<Executor> >(ex_)) // todo check why this doesn't works with C++03
103
+ : ex( new executor_ref<Executor>(ex_) )
104
104
  {
105
105
  }
106
106
 
@@ -16,6 +16,7 @@
16
16
  #include <boost/thread/detail/move.hpp>
17
17
  #include <boost/thread/concurrent_queues/sync_queue.hpp>
18
18
  #include <boost/thread/executors/work.hpp>
19
+ #include <boost/assert.hpp>
19
20
 
20
21
  #include <boost/config/abi_prefix.hpp>
21
22
 
@@ -40,15 +41,33 @@ namespace executors
40
41
  * Throws: whatever the current task constructor throws or the task() throws.
41
42
  */
42
43
  bool try_executing_one()
44
+ {
45
+ return execute_one(/*wait:*/false);
46
+ }
47
+
48
+ private:
49
+ /**
50
+ * Effects: Execute one task.
51
+ * Remark: If wait is true, waits until a task is available or the executor
52
+ * is closed. If wait is false, returns false immediately if no
53
+ * task is available.
54
+ * Returns: whether a task has been executed (if wait is true, only returns false if closed).
55
+ * Throws: whatever the current task constructor throws or the task() throws.
56
+ */
57
+ bool execute_one(bool wait)
43
58
  {
44
59
  work task;
45
60
  try
46
61
  {
47
- if (work_queue.try_pull(task) == queue_op_status::success)
62
+ queue_op_status status = wait ?
63
+ work_queue.wait_pull(task) :
64
+ work_queue.try_pull(task);
65
+ if (status == queue_op_status::success)
48
66
  {
49
67
  task();
50
68
  return true;
51
69
  }
70
+ BOOST_ASSERT(!wait || status == queue_op_status::closed);
52
71
  return false;
53
72
  }
54
73
  catch (...)
@@ -57,21 +76,6 @@ namespace executors
57
76
  //return false;
58
77
  }
59
78
  }
60
- private:
61
- /**
62
- * Effects: schedule one task or yields
63
- * Throws: whatever the current task constructor throws or the task() throws.
64
- */
65
- void schedule_one_or_yield()
66
- {
67
- if ( ! try_executing_one())
68
- {
69
- this_thread::yield();
70
- }
71
- }
72
-
73
-
74
-
75
79
 
76
80
  public:
77
81
  /// loop_executor is not copyable.
@@ -101,10 +105,10 @@ namespace executors
101
105
  */
102
106
  void loop()
103
107
  {
104
- while (!closed())
108
+ while (execute_one(/*wait:*/true))
105
109
  {
106
- schedule_one_or_yield();
107
110
  }
111
+ BOOST_ASSERT(closed());
108
112
  while (try_executing_one())
109
113
  {
110
114
  }
@@ -14,7 +14,6 @@
14
14
  // due to boost::exception::exception_ptr dependency
15
15
 
16
16
  //#define BOOST_THREAD_CONTINUATION_SYNC
17
- #define BOOST_THREAD_FUTURE_BLOCKING
18
17
 
19
18
  #ifndef BOOST_NO_EXCEPTIONS
20
19
 
@@ -177,8 +176,8 @@ namespace boost
177
176
  ex()
178
177
  {}
179
178
 
180
- shared_state_base(exceptional_ptr const& ex):
181
- exception(ex.ptr_),
179
+ shared_state_base(exceptional_ptr const& ex_):
180
+ exception(ex_.ptr_),
182
181
  done(true),
183
182
  is_valid_(true),
184
183
  is_deferred_(false),
@@ -825,6 +824,12 @@ namespace boost
825
824
  {
826
825
  #ifdef BOOST_THREAD_FUTURE_BLOCKING
827
826
  join();
827
+ #elif defined BOOST_THREAD_ASYNC_FUTURE_WAITS
828
+ unique_lock<boost::mutex> lk(this->mutex);
829
+ while(!this->done)
830
+ {
831
+ this->waiters.wait(lk);
832
+ }
828
833
  #endif
829
834
  }
830
835
 
@@ -853,9 +858,9 @@ namespace boost
853
858
  void init(BOOST_THREAD_FWD_REF(Fp) f)
854
859
  {
855
860
  #ifdef BOOST_THREAD_FUTURE_BLOCKING
856
- this->thr_ = thread(&future_async_shared_state::run, static_shared_from_this(this), boost::forward<Fp>(f));
861
+ this->thr_ = boost::thread(&future_async_shared_state::run, static_shared_from_this(this), boost::forward<Fp>(f));
857
862
  #else
858
- thread(&future_async_shared_state::run, static_shared_from_this(this), boost::forward<Fp>(f)).detach();
863
+ boost::thread(&future_async_shared_state::run, static_shared_from_this(this), boost::forward<Fp>(f)).detach();
859
864
  #endif
860
865
  }
861
866
 
@@ -878,9 +883,9 @@ namespace boost
878
883
  void init(BOOST_THREAD_FWD_REF(Fp) f)
879
884
  {
880
885
  #ifdef BOOST_THREAD_FUTURE_BLOCKING
881
- this->thr_ = thread(&future_async_shared_state::run, static_shared_from_this(this), boost::move(f));
886
+ this->thr_ = boost::thread(&future_async_shared_state::run, static_shared_from_this(this), boost::move(f));
882
887
  #else
883
- thread(&future_async_shared_state::run, static_shared_from_this(this), boost::move(f)).detach();
888
+ boost::thread(&future_async_shared_state::run, static_shared_from_this(this), boost::move(f)).detach();
884
889
  #endif
885
890
  }
886
891
 
@@ -904,9 +909,9 @@ namespace boost
904
909
  void init(BOOST_THREAD_FWD_REF(Fp) f)
905
910
  {
906
911
  #ifdef BOOST_THREAD_FUTURE_BLOCKING
907
- this->thr_ = thread(&future_async_shared_state::run, static_shared_from_this(this), boost::move(f));
912
+ this->thr_ = boost::thread(&future_async_shared_state::run, static_shared_from_this(this), boost::move(f));
908
913
  #else
909
- thread(&future_async_shared_state::run, static_shared_from_this(this), boost::move(f)).detach();
914
+ boost::thread(&future_async_shared_state::run, static_shared_from_this(this), boost::move(f)).detach();
910
915
  #endif
911
916
  }
912
917
 
@@ -1350,7 +1355,7 @@ namespace boost
1350
1355
  boost::throw_exception(future_uninitialized());
1351
1356
  }
1352
1357
  return future_->mutex;
1353
- };
1358
+ }
1354
1359
 
1355
1360
  notify_when_ready_handle notify_when_ready(boost::condition_variable_any& cv)
1356
1361
  {
@@ -1432,6 +1437,10 @@ namespace boost
1432
1437
  BOOST_THREAD_FUTURE<Rp>
1433
1438
  make_future_async_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
1434
1439
 
1440
+ template <class F, class Rp, class Fp>
1441
+ BOOST_THREAD_FUTURE<Rp>
1442
+ make_future_sync_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
1443
+
1435
1444
  template <class F, class Rp, class Fp>
1436
1445
  BOOST_THREAD_FUTURE<Rp>
1437
1446
  make_future_deferred_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
@@ -1444,6 +1453,11 @@ namespace boost
1444
1453
  BOOST_THREAD_FUTURE<Rp>
1445
1454
  make_shared_future_async_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, F f, BOOST_THREAD_FWD_REF(Fp) c);
1446
1455
 
1456
+ template<typename F, typename Rp, typename Fp>
1457
+ BOOST_THREAD_FUTURE<Rp>
1458
+ make_shared_future_sync_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, F f, BOOST_THREAD_FWD_REF(Fp) c);
1459
+
1460
+
1447
1461
  #ifdef BOOST_THREAD_PROVIDES_EXECUTORS
1448
1462
  template<typename Ex, typename F, typename Rp, typename Fp>
1449
1463
  BOOST_THREAD_FUTURE<Rp>
@@ -1516,6 +1530,10 @@ namespace boost
1516
1530
  friend BOOST_THREAD_FUTURE<Rp>
1517
1531
  detail::make_future_async_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
1518
1532
 
1533
+ template <class F, class Rp, class Fp>
1534
+ friend BOOST_THREAD_FUTURE<Rp>
1535
+ detail::make_future_sync_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
1536
+
1519
1537
  template <class F, class Rp, class Fp>
1520
1538
  friend BOOST_THREAD_FUTURE<Rp>
1521
1539
  detail::make_future_deferred_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
@@ -1528,6 +1546,10 @@ namespace boost
1528
1546
  friend BOOST_THREAD_FUTURE<Rp>
1529
1547
  detail::make_shared_future_async_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, F f, BOOST_THREAD_FWD_REF(Fp) c);
1530
1548
 
1549
+ template<typename F, typename Rp, typename Fp>
1550
+ friend BOOST_THREAD_FUTURE<Rp>
1551
+ detail::make_shared_future_sync_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, F f, BOOST_THREAD_FWD_REF(Fp) c);
1552
+
1531
1553
  #ifdef BOOST_THREAD_PROVIDES_EXECUTORS
1532
1554
  template<typename Ex, typename F, typename Rp, typename Fp>
1533
1555
  friend BOOST_THREAD_FUTURE<Rp>
@@ -1617,7 +1639,7 @@ namespace boost
1617
1639
  base_type(boost::move(static_cast<base_type&>(BOOST_THREAD_RV(other))))
1618
1640
  {
1619
1641
  }
1620
- inline BOOST_THREAD_FUTURE(BOOST_THREAD_RV_REF(BOOST_THREAD_FUTURE<BOOST_THREAD_FUTURE<R> >) other); // EXTENSION
1642
+ inline explicit BOOST_THREAD_FUTURE(BOOST_THREAD_RV_REF(BOOST_THREAD_FUTURE<BOOST_THREAD_FUTURE<R> >) other); // EXTENSION
1621
1643
 
1622
1644
  explicit BOOST_THREAD_FUTURE(BOOST_THREAD_RV_REF(shared_future<R>) other) :
1623
1645
  base_type(boost::move(static_cast<base_type&>(BOOST_THREAD_RV(other))))
@@ -1772,6 +1794,10 @@ namespace boost
1772
1794
  friend BOOST_THREAD_FUTURE<Rp>
1773
1795
  detail::make_future_async_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
1774
1796
 
1797
+ template <class F, class Rp, class Fp>
1798
+ friend BOOST_THREAD_FUTURE<Rp>
1799
+ detail::make_future_sync_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
1800
+
1775
1801
  template <class F, class Rp, class Fp>
1776
1802
  friend BOOST_THREAD_FUTURE<Rp>
1777
1803
  detail::make_future_deferred_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
@@ -1784,6 +1810,10 @@ namespace boost
1784
1810
  friend BOOST_THREAD_FUTURE<Rp>
1785
1811
  detail::make_shared_future_async_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, F f, BOOST_THREAD_FWD_REF(Fp) c);
1786
1812
 
1813
+ template<typename F, typename Rp, typename Fp>
1814
+ friend BOOST_THREAD_FUTURE<Rp>
1815
+ detail::make_shared_future_sync_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, F f, BOOST_THREAD_FWD_REF(Fp) c);
1816
+
1787
1817
  #ifdef BOOST_THREAD_PROVIDES_EXECUTORS
1788
1818
  template<typename Ex, typename F, typename Rp, typename Fp>
1789
1819
  friend BOOST_THREAD_FUTURE<Rp>
@@ -2005,6 +2035,10 @@ namespace boost
2005
2035
  friend BOOST_THREAD_FUTURE<Rp>
2006
2036
  detail::make_future_async_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
2007
2037
 
2038
+ template <class F, class Rp, class Fp>
2039
+ friend BOOST_THREAD_FUTURE<Rp>
2040
+ detail::make_future_sync_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
2041
+
2008
2042
  template <class F, class Rp, class Fp>
2009
2043
  friend BOOST_THREAD_FUTURE<Rp>
2010
2044
  detail::make_future_deferred_continuation_shared_state(boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c);
@@ -4210,12 +4244,6 @@ namespace detail {
4210
4244
  ////////////////////////////////
4211
4245
  #if defined BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION
4212
4246
 
4213
- #if defined BOOST_THREAD_CONTINUATION_SYNC
4214
- #define continuation_shared_state_base shared_state
4215
- #else
4216
- #define continuation_shared_state_base future_async_shared_state_base
4217
- #endif
4218
-
4219
4247
  namespace detail
4220
4248
  {
4221
4249
  //////////////////////
@@ -4345,26 +4373,43 @@ namespace detail
4345
4373
  /////////////////////////
4346
4374
 
4347
4375
  template<typename F, typename Rp, typename Fp>
4348
- struct future_async_continuation_shared_state: continuation_shared_state<F,Rp,Fp,continuation_shared_state_base<Rp> >
4376
+ struct future_async_continuation_shared_state: continuation_shared_state<F,Rp,Fp,future_async_shared_state_base<Rp> >
4349
4377
  {
4350
- typedef continuation_shared_state<F,Rp,Fp,continuation_shared_state_base<Rp> > base_type;
4378
+ typedef continuation_shared_state<F,Rp,Fp,future_async_shared_state_base<Rp> > base_type;
4351
4379
  public:
4352
4380
  future_async_continuation_shared_state(BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c)
4353
4381
  : base_type(boost::move(f), boost::forward<Fp>(c))
4354
4382
  { }
4355
4383
 
4356
4384
  void launch_continuation() {
4357
- #if defined BOOST_THREAD_CONTINUATION_SYNC
4358
- this->call();
4359
- #elif defined BOOST_THREAD_FUTURE_BLOCKING
4385
+ #if defined BOOST_THREAD_FUTURE_BLOCKING
4360
4386
  boost::lock_guard<boost::mutex> lk(this->mutex);
4361
- this->thr_ = thread(&future_async_continuation_shared_state::run, static_shared_from_this(this));
4387
+ this->thr_ = boost::thread(&future_async_continuation_shared_state::run, static_shared_from_this(this));
4362
4388
  #else
4363
- thread(&future_async_continuation_shared_state::run, static_shared_from_this(this)).detach();
4389
+ boost::thread(&base_type::run, static_shared_from_this(this)).detach();
4364
4390
  #endif
4365
4391
  }
4366
4392
  };
4367
4393
 
4394
+ /////////////////////////
4395
+ /// future_sync_continuation_shared_state
4396
+ /////////////////////////
4397
+
4398
+ template<typename F, typename Rp, typename Fp>
4399
+ struct future_sync_continuation_shared_state: continuation_shared_state<F,Rp,Fp,shared_state<Rp> >
4400
+ {
4401
+ typedef continuation_shared_state<F,Rp,Fp,shared_state<Rp> > base_type;
4402
+ public:
4403
+ future_sync_continuation_shared_state(BOOST_THREAD_RV_REF(F) f, BOOST_THREAD_FWD_REF(Fp) c)
4404
+ : base_type(boost::move(f), boost::forward<Fp>(c))
4405
+ { }
4406
+
4407
+ void launch_continuation() {
4408
+ this->call();
4409
+ }
4410
+ };
4411
+
4412
+
4368
4413
  /////////////////////////
4369
4414
  /// future_executor_continuation_shared_state
4370
4415
  /////////////////////////
@@ -4445,9 +4490,9 @@ namespace detail {
4445
4490
  /////////////////////////
4446
4491
 
4447
4492
  template<typename F, typename Rp, typename Fp>
4448
- struct shared_future_async_continuation_shared_state: continuation_shared_state<F,Rp,Fp,continuation_shared_state_base<Rp> >
4493
+ struct shared_future_async_continuation_shared_state: continuation_shared_state<F,Rp,Fp,future_async_shared_state_base<Rp> >
4449
4494
  {
4450
- typedef continuation_shared_state<F,Rp,Fp,continuation_shared_state_base<Rp> > base_type;
4495
+ typedef continuation_shared_state<F,Rp,Fp,future_async_shared_state_base<Rp> > base_type;
4451
4496
 
4452
4497
  public:
4453
4498
  shared_future_async_continuation_shared_state(F f, BOOST_THREAD_FWD_REF(Fp) c)
@@ -4456,19 +4501,36 @@ namespace detail {
4456
4501
  }
4457
4502
 
4458
4503
  void launch_continuation() {
4459
- #if defined BOOST_THREAD_CONTINUATION_SYNC
4460
- this->call();
4461
- #elif defined BOOST_THREAD_FUTURE_BLOCKING
4504
+ #if defined BOOST_THREAD_FUTURE_BLOCKING
4462
4505
  boost::lock_guard<boost::mutex> lk(this->mutex);
4463
- this->thr_ = thread(&shared_future_async_continuation_shared_state::run, static_shared_from_this(this));
4506
+ this->thr_ = boost::thread(&base_type::run, static_shared_from_this(this));
4464
4507
  #else
4465
- thread(&shared_future_async_continuation_shared_state::run, static_shared_from_this(this)).detach();
4508
+ boost::thread(&base_type::run, static_shared_from_this(this)).detach();
4466
4509
  #endif
4467
4510
  }
4511
+ };
4468
4512
 
4469
- ~shared_future_async_continuation_shared_state() {}
4513
+ /////////////////////////
4514
+ /// shared_future_async_continuation_shared_state
4515
+ /////////////////////////
4516
+
4517
+ template<typename F, typename Rp, typename Fp>
4518
+ struct shared_future_sync_continuation_shared_state: continuation_shared_state<F,Rp,Fp,shared_state<Rp> >
4519
+ {
4520
+ typedef continuation_shared_state<F,Rp,Fp,shared_state<Rp> > base_type;
4521
+
4522
+ public:
4523
+ shared_future_sync_continuation_shared_state(F f, BOOST_THREAD_FWD_REF(Fp) c)
4524
+ : base_type(boost::move(f), boost::forward<Fp>(c))
4525
+ {
4526
+ }
4527
+
4528
+ void launch_continuation() {
4529
+ this->call();
4530
+ }
4470
4531
  };
4471
4532
 
4533
+
4472
4534
  /////////////////////////
4473
4535
  /// shared_future_executor_continuation_shared_state
4474
4536
  /////////////////////////
@@ -4577,6 +4639,21 @@ namespace detail {
4577
4639
 
4578
4640
  return BOOST_THREAD_FUTURE<Rp>(h);
4579
4641
  }
4642
+ ////////////////////////////////
4643
+ // make_future_sync_continuation_shared_state
4644
+ ////////////////////////////////
4645
+ template<typename F, typename Rp, typename Fp>
4646
+ BOOST_THREAD_FUTURE<Rp>
4647
+ make_future_sync_continuation_shared_state(
4648
+ boost::unique_lock<boost::mutex> &lock, BOOST_THREAD_RV_REF(F) f,
4649
+ BOOST_THREAD_FWD_REF(Fp) c) {
4650
+ typedef typename decay<Fp>::type Cont;
4651
+ shared_ptr<future_sync_continuation_shared_state<F,Rp, Cont> >
4652
+ h(new future_sync_continuation_shared_state<F,Rp, Cont>(boost::move(f), boost::forward<Fp>(c)));
4653
+ h->init(lock);
4654
+
4655
+ return BOOST_THREAD_FUTURE<Rp>(h);
4656
+ }
4580
4657
 
4581
4658
  ////////////////////////////////
4582
4659
  // make_future_executor_continuation_shared_state
@@ -4628,6 +4705,21 @@ namespace detail {
4628
4705
  return BOOST_THREAD_FUTURE<Rp>(h);
4629
4706
  }
4630
4707
  ////////////////////////////////
4708
+ // make_shared_future_sync_continuation_shared_state
4709
+ ////////////////////////////////
4710
+ template<typename F, typename Rp, typename Fp>
4711
+ BOOST_THREAD_FUTURE<Rp>
4712
+ make_shared_future_sync_continuation_shared_state(
4713
+ boost::unique_lock<boost::mutex> &lock, F f,
4714
+ BOOST_THREAD_FWD_REF(Fp) c) {
4715
+ typedef typename decay<Fp>::type Cont;
4716
+ shared_ptr<shared_future_sync_continuation_shared_state<F,Rp, Cont> >
4717
+ h(new shared_future_sync_continuation_shared_state<F,Rp, Cont>(f, boost::forward<Fp>(c)));
4718
+ h->init(lock);
4719
+
4720
+ return BOOST_THREAD_FUTURE<Rp>(h);
4721
+ }
4722
+ ////////////////////////////////
4631
4723
  // make_shared_future_executor_continuation_shared_state
4632
4724
  ////////////////////////////////
4633
4725
  #ifdef BOOST_THREAD_PROVIDES_EXECUTORS
@@ -4680,17 +4772,17 @@ namespace detail {
4680
4772
  #endif
4681
4773
  } else if (underlying_cast<int>(policy) & int(launch::inherit)) {
4682
4774
 
4683
- launch policy = this->launch_policy(lock);
4684
- if (underlying_cast<int>(policy) & int(launch::async)) {
4775
+ launch policy_ = this->launch_policy(lock);
4776
+ if (underlying_cast<int>(policy_) & int(launch::async)) {
4685
4777
  return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_future_async_continuation_shared_state<BOOST_THREAD_FUTURE<R>, future_type>(
4686
4778
  lock, boost::move(*this), boost::forward<F>(func)
4687
4779
  )));
4688
- } else if (underlying_cast<int>(policy) & int(launch::deferred)) {
4780
+ } else if (underlying_cast<int>(policy_) & int(launch::deferred)) {
4689
4781
  return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_future_deferred_continuation_shared_state<BOOST_THREAD_FUTURE<R>, future_type>(
4690
4782
  lock, boost::move(*this), boost::forward<F>(func)
4691
4783
  )));
4692
4784
  #ifdef BOOST_THREAD_PROVIDES_EXECUTORS
4693
- } else if (underlying_cast<int>(policy) & int(launch::executor)) {
4785
+ } else if (underlying_cast<int>(policy_) & int(launch::executor)) {
4694
4786
  assert(this->future_->get_executor());
4695
4787
  typedef executor Ex;
4696
4788
  Ex& ex = *(this->future_->get_executor());
@@ -4787,6 +4879,10 @@ namespace detail {
4787
4879
  return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_future_deferred_continuation_shared_state<BOOST_THREAD_FUTURE<R>, future_type>(
4788
4880
  lock, boost::move(*this), boost::forward<F>(func)
4789
4881
  )));
4882
+ } else if (underlying_cast<int>(policy) & int(launch::sync)) {
4883
+ return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_future_sync_continuation_shared_state<BOOST_THREAD_FUTURE<R>, future_type>(
4884
+ lock, boost::move(*this), boost::forward<F>(func)
4885
+ )));
4790
4886
  #ifdef BOOST_THREAD_PROVIDES_EXECUTORS
4791
4887
  } else if (underlying_cast<int>(policy) & int(launch::executor)) {
4792
4888
  assert(this->future_->get_executor());
@@ -4797,18 +4893,22 @@ namespace detail {
4797
4893
  )));
4798
4894
  #endif
4799
4895
  } else if (underlying_cast<int>(policy) & int(launch::inherit)) {
4800
- launch policy = this->launch_policy(lock);
4896
+ launch policy_ = this->launch_policy(lock);
4801
4897
 
4802
- if (underlying_cast<int>(policy) & int(launch::async)) {
4898
+ if (underlying_cast<int>(policy_) & int(launch::async)) {
4803
4899
  return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_future_async_continuation_shared_state<BOOST_THREAD_FUTURE<R>, future_type>(
4804
4900
  lock, boost::move(*this), boost::forward<F>(func)
4805
4901
  )));
4806
- } else if (underlying_cast<int>(policy) & int(launch::deferred)) {
4902
+ } else if (underlying_cast<int>(policy_) & int(launch::deferred)) {
4807
4903
  return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_future_deferred_continuation_shared_state<BOOST_THREAD_FUTURE<R>, future_type>(
4808
4904
  lock, boost::move(*this), boost::forward<F>(func)
4809
4905
  )));
4906
+ } else if (underlying_cast<int>(policy_) & int(launch::sync)) {
4907
+ return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_future_sync_continuation_shared_state<BOOST_THREAD_FUTURE<R>, future_type>(
4908
+ lock, boost::move(*this), boost::forward<F>(func)
4909
+ )));
4810
4910
  #ifdef BOOST_THREAD_PROVIDES_EXECUTORS
4811
- } else if (underlying_cast<int>(policy) & int(launch::executor)) {
4911
+ } else if (underlying_cast<int>(policy_) & int(launch::executor)) {
4812
4912
  assert(this->future_->get_executor());
4813
4913
  typedef executor Ex;
4814
4914
  Ex& ex = *(this->future_->get_executor());
@@ -4878,7 +4978,7 @@ namespace detail {
4878
4978
  lock, boost::move(*this), boost::forward<F>(func)
4879
4979
  )));
4880
4980
  } else {
4881
- return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_future_async_continuation_shared_state<BOOST_THREAD_FUTURE<R>, future_type>(
4981
+ return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_future_sync_continuation_shared_state<BOOST_THREAD_FUTURE<R>, future_type>(
4882
4982
  lock, boost::move(*this), boost::forward<F>(func)
4883
4983
  )));
4884
4984
  }
@@ -4906,6 +5006,10 @@ namespace detail {
4906
5006
  return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_shared_future_deferred_continuation_shared_state<shared_future<R>, future_type>(
4907
5007
  lock, *this, boost::forward<F>(func)
4908
5008
  )));
5009
+ } else if (underlying_cast<int>(policy) & int(launch::sync)) {
5010
+ return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_shared_future_sync_continuation_shared_state<shared_future<R>, future_type>(
5011
+ lock, *this, boost::forward<F>(func)
5012
+ )));
4909
5013
  #ifdef BOOST_THREAD_PROVIDES_EXECUTORS
4910
5014
  } else if (underlying_cast<int>(policy) & int(launch::executor)) {
4911
5015
  typedef executor Ex;
@@ -4916,17 +5020,21 @@ namespace detail {
4916
5020
  #endif
4917
5021
  } else if (underlying_cast<int>(policy) & int(launch::inherit)) {
4918
5022
 
4919
- launch policy = this->launch_policy(lock);
4920
- if (underlying_cast<int>(policy) & int(launch::async)) {
5023
+ launch policy_ = this->launch_policy(lock);
5024
+ if (underlying_cast<int>(policy_) & int(launch::async)) {
4921
5025
  return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_shared_future_async_continuation_shared_state<shared_future<R>, future_type>(
4922
5026
  lock, *this, boost::forward<F>(func)
4923
5027
  )));
4924
- } else if (underlying_cast<int>(policy) & int(launch::deferred)) {
5028
+ } else if (underlying_cast<int>(policy_) & int(launch::deferred)) {
4925
5029
  return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_shared_future_deferred_continuation_shared_state<shared_future<R>, future_type>(
4926
5030
  lock, *this, boost::forward<F>(func)
4927
5031
  )));
5032
+ } else if (underlying_cast<int>(policy_) & int(launch::sync)) {
5033
+ return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_shared_future_sync_continuation_shared_state<shared_future<R>, future_type>(
5034
+ lock, *this, boost::forward<F>(func)
5035
+ )));
4928
5036
  #ifdef BOOST_THREAD_PROVIDES_EXECUTORS
4929
- } else if (underlying_cast<int>(policy) & int(launch::executor)) {
5037
+ } else if (underlying_cast<int>(policy_) & int(launch::executor)) {
4930
5038
  typedef executor Ex;
4931
5039
  Ex& ex = *(this->future_->get_executor());
4932
5040
  return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_shared_future_executor_continuation_shared_state<Ex, shared_future<R>, future_type>(ex,
@@ -4986,7 +5094,7 @@ namespace detail {
4986
5094
  lock, *this, boost::forward<F>(func)
4987
5095
  )));
4988
5096
  } else {
4989
- return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_shared_future_async_continuation_shared_state<shared_future<R>, future_type>(
5097
+ return BOOST_THREAD_MAKE_RV_REF((boost::detail::make_shared_future_sync_continuation_shared_state<shared_future<R>, future_type>(
4990
5098
  lock, *this, boost::forward<F>(func)
4991
5099
  )));
4992
5100
  }
@@ -5208,9 +5316,9 @@ namespace detail
5208
5316
  return;
5209
5317
  }
5210
5318
  #ifdef BOOST_THREAD_FUTURE_BLOCKING
5211
- this->thr_ = thread(&future_when_all_vector_shared_state::run, this->shared_from_this());
5319
+ this->thr_ = boost::thread(&future_when_all_vector_shared_state::run, this->shared_from_this());
5212
5320
  #else
5213
- thread(&future_when_all_vector_shared_state::run, this->shared_from_this()).detach();
5321
+ boost::thread(&future_when_all_vector_shared_state::run, this->shared_from_this()).detach();
5214
5322
  #endif
5215
5323
  }
5216
5324
 
@@ -5279,9 +5387,9 @@ namespace detail
5279
5387
  }
5280
5388
 
5281
5389
  #ifdef BOOST_THREAD_FUTURE_BLOCKING
5282
- this->thr_ = thread(&future_when_any_vector_shared_state::run, this->shared_from_this());
5390
+ this->thr_ = boost::thread(&future_when_any_vector_shared_state::run, this->shared_from_this());
5283
5391
  #else
5284
- thread(&future_when_any_vector_shared_state::run, this->shared_from_this()).detach();
5392
+ boost::thread(&future_when_any_vector_shared_state::run, this->shared_from_this()).detach();
5285
5393
  #endif
5286
5394
  }
5287
5395
 
@@ -5386,9 +5494,9 @@ namespace detail
5386
5494
  return;
5387
5495
  }
5388
5496
  #ifdef BOOST_THREAD_FUTURE_BLOCKING
5389
- this->thr_ = thread(&future_when_all_tuple_shared_state::run, this->shared_from_this());
5497
+ this->thr_ = boost::thread(&future_when_all_tuple_shared_state::run, this->shared_from_this());
5390
5498
  #else
5391
- thread(&future_when_all_tuple_shared_state::run, this->shared_from_this()).detach();
5499
+ boost::thread(&future_when_all_tuple_shared_state::run, this->shared_from_this()).detach();
5392
5500
  #endif
5393
5501
 
5394
5502
  }
@@ -5457,9 +5565,9 @@ namespace detail
5457
5565
  }
5458
5566
 
5459
5567
  #ifdef BOOST_THREAD_FUTURE_BLOCKING
5460
- this->thr_ = thread(&future_when_any_tuple_shared_state::run, this->shared_from_this());
5568
+ this->thr_ = boost::thread(&future_when_any_tuple_shared_state::run, this->shared_from_this());
5461
5569
  #else
5462
- thread(&future_when_any_tuple_shared_state::run, this->shared_from_this()).detach();
5570
+ boost::thread(&future_when_any_tuple_shared_state::run, this->shared_from_this()).detach();
5463
5571
  #endif
5464
5572
  }
5465
5573
 
@@ -5548,5 +5656,5 @@ namespace detail
5548
5656
  #endif // BOOST_THREAD_PROVIDES_FUTURE_WHEN_ALL_WHEN_ANY
5549
5657
  }
5550
5658
 
5551
- #endif // BOOST_NO_EXCEPTION
5659
+ #endif // BOOST_NO_EXCEPTIONS
5552
5660
  #endif // header