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
@@ -24,6 +24,7 @@
24
24
 
25
25
  #ifndef BOOST_NO_EXCEPTIONS
26
26
  #include <stdexcept> //for std exception types
27
+ #include <string> //for implicit std::string conversion
27
28
  #include <new> //for std::bad_alloc
28
29
  #else
29
30
  #include <boost/assert.hpp>
@@ -30,8 +30,8 @@ namespace container {
30
30
  static ::std::allocator_arg_t *dummy;
31
31
  };
32
32
 
33
- template <int Dummy>
34
- ::std::allocator_arg_t *std_allocator_arg_holder<Dummy>::dummy;
33
+ template <int Dummy> //Silence null-reference compiler warnings
34
+ ::std::allocator_arg_t *std_allocator_arg_holder<Dummy>::dummy = reinterpret_cast< ::std::allocator_arg_t * >(0x1234);
35
35
 
36
36
  typedef const std::allocator_arg_t & allocator_arg_t;
37
37
 
@@ -96,13 +96,13 @@ class vec_iterator
96
96
  Pointer m_ptr;
97
97
 
98
98
  public:
99
- const Pointer &get_ptr() const BOOST_NOEXCEPT_OR_NOTHROW
99
+ BOOST_CONTAINER_FORCEINLINE const Pointer &get_ptr() const BOOST_NOEXCEPT_OR_NOTHROW
100
100
  { return m_ptr; }
101
101
 
102
- Pointer &get_ptr() BOOST_NOEXCEPT_OR_NOTHROW
102
+ BOOST_CONTAINER_FORCEINLINE Pointer &get_ptr() BOOST_NOEXCEPT_OR_NOTHROW
103
103
  { return m_ptr; }
104
104
 
105
- explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW
105
+ BOOST_CONTAINER_FORCEINLINE explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW
106
106
  : m_ptr(ptr)
107
107
  {}
108
108
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
@@ -110,73 +110,73 @@ class vec_iterator
110
110
  public:
111
111
 
112
112
  //Constructors
113
- vec_iterator() BOOST_NOEXCEPT_OR_NOTHROW
113
+ BOOST_CONTAINER_FORCEINLINE vec_iterator() BOOST_NOEXCEPT_OR_NOTHROW
114
114
  : m_ptr() //Value initialization to achieve "null iterators" (N3644)
115
115
  {}
116
116
 
117
- vec_iterator(vec_iterator<Pointer, false> const& other) BOOST_NOEXCEPT_OR_NOTHROW
117
+ BOOST_CONTAINER_FORCEINLINE vec_iterator(vec_iterator<Pointer, false> const& other) BOOST_NOEXCEPT_OR_NOTHROW
118
118
  : m_ptr(other.get_ptr())
119
119
  {}
120
120
 
121
121
  //Pointer like operators
122
- reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
122
+ BOOST_CONTAINER_FORCEINLINE reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
123
123
  { return *m_ptr; }
124
124
 
125
- pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
125
+ BOOST_CONTAINER_FORCEINLINE pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
126
126
  { return ::boost::intrusive::pointer_traits<pointer>::pointer_to(this->operator*()); }
127
127
 
128
- reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
128
+ BOOST_CONTAINER_FORCEINLINE reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
129
129
  { return m_ptr[off]; }
130
130
 
131
131
  //Increment / Decrement
132
- vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
132
+ BOOST_CONTAINER_FORCEINLINE vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
133
133
  { ++m_ptr; return *this; }
134
134
 
135
- vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
135
+ BOOST_CONTAINER_FORCEINLINE vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
136
136
  { return vec_iterator(m_ptr++); }
137
137
 
138
- vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
138
+ BOOST_CONTAINER_FORCEINLINE vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
139
139
  { --m_ptr; return *this; }
140
140
 
141
- vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
141
+ BOOST_CONTAINER_FORCEINLINE vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
142
142
  { return vec_iterator(m_ptr--); }
143
143
 
144
144
  //Arithmetic
145
- vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
145
+ BOOST_CONTAINER_FORCEINLINE vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
146
146
  { m_ptr += off; return *this; }
147
147
 
148
- vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
148
+ BOOST_CONTAINER_FORCEINLINE vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
149
149
  { m_ptr -= off; return *this; }
150
150
 
151
- friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
151
+ BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
152
152
  { return vec_iterator(x.m_ptr+off); }
153
153
 
154
- friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
154
+ BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
155
155
  { right.m_ptr += off; return right; }
156
156
 
157
- friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
157
+ BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
158
158
  { left.m_ptr -= off; return left; }
159
159
 
160
- friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
160
+ BOOST_CONTAINER_FORCEINLINE friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
161
161
  { return left.m_ptr - right.m_ptr; }
162
162
 
163
163
  //Comparison operators
164
- friend bool operator== (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
164
+ BOOST_CONTAINER_FORCEINLINE friend bool operator== (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
165
165
  { return l.m_ptr == r.m_ptr; }
166
166
 
167
- friend bool operator!= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
167
+ BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
168
168
  { return l.m_ptr != r.m_ptr; }
169
169
 
170
- friend bool operator< (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
170
+ BOOST_CONTAINER_FORCEINLINE friend bool operator< (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
171
171
  { return l.m_ptr < r.m_ptr; }
172
172
 
173
- friend bool operator<= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
173
+ BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
174
174
  { return l.m_ptr <= r.m_ptr; }
175
175
 
176
- friend bool operator> (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
176
+ BOOST_CONTAINER_FORCEINLINE friend bool operator> (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
177
177
  { return l.m_ptr > r.m_ptr; }
178
178
 
179
- friend bool operator>= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
179
+ BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
180
180
  { return l.m_ptr >= r.m_ptr; }
181
181
  };
182
182
 
@@ -186,7 +186,7 @@ struct vector_insert_ordered_cursor
186
186
  typedef typename iterator_traits<BiDirPosConstIt>::value_type size_type;
187
187
  typedef typename iterator_traits<BiDirValueIt>::reference reference;
188
188
 
189
- vector_insert_ordered_cursor(BiDirPosConstIt posit, BiDirValueIt valueit)
189
+ BOOST_CONTAINER_FORCEINLINE vector_insert_ordered_cursor(BiDirPosConstIt posit, BiDirValueIt valueit)
190
190
  : last_position_it(posit), last_value_it(valueit)
191
191
  {}
192
192
 
@@ -200,10 +200,10 @@ struct vector_insert_ordered_cursor
200
200
  }
201
201
  }
202
202
 
203
- size_type get_pos() const
203
+ BOOST_CONTAINER_FORCEINLINE size_type get_pos() const
204
204
  { return *last_position_it; }
205
205
 
206
- reference get_val()
206
+ BOOST_CONTAINER_FORCEINLINE reference get_val()
207
207
  { return *last_value_it; }
208
208
 
209
209
  BiDirPosConstIt last_position_it;
@@ -216,7 +216,7 @@ struct vector_merge_cursor
216
216
  typedef SizeType size_type;
217
217
  typedef typename iterator_traits<BiDirValueIt>::reference reference;
218
218
 
219
- vector_merge_cursor(T *pbeg, T *plast, BiDirValueIt valueit, Comp &cmp)
219
+ BOOST_CONTAINER_FORCEINLINE vector_merge_cursor(T *pbeg, T *plast, BiDirValueIt valueit, Comp &cmp)
220
220
  : m_pbeg(pbeg), m_pcur(--plast), m_valueit(valueit), m_cmp(cmp)
221
221
  {}
222
222
 
@@ -232,10 +232,10 @@ struct vector_merge_cursor
232
232
  }
233
233
  }
234
234
 
235
- size_type get_pos() const
235
+ BOOST_CONTAINER_FORCEINLINE size_type get_pos() const
236
236
  { return static_cast<size_type>((m_pcur + 1) - m_pbeg); }
237
237
 
238
- reference get_val()
238
+ BOOST_CONTAINER_FORCEINLINE reference get_val()
239
239
  { return *m_valueit; }
240
240
 
241
241
  T *const m_pbeg;
@@ -247,11 +247,11 @@ struct vector_merge_cursor
247
247
  } //namespace container_detail {
248
248
 
249
249
  template<class Pointer, bool IsConst>
250
- const Pointer &vector_iterator_get_ptr(const container_detail::vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
250
+ BOOST_CONTAINER_FORCEINLINE const Pointer &vector_iterator_get_ptr(const container_detail::vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
251
251
  { return it.get_ptr(); }
252
252
 
253
253
  template<class Pointer, bool IsConst>
254
- Pointer &get_ptr(container_detail::vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
254
+ BOOST_CONTAINER_FORCEINLINE Pointer &get_ptr(container_detail::vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
255
255
  { return it.get_ptr(); }
256
256
 
257
257
  namespace container_detail {
@@ -270,7 +270,7 @@ struct vector_get_ptr_pointer_to_non_const
270
270
  typedef typename pointer_traits_t
271
271
  ::template rebind_pointer<non_const_element_type>::type return_type;
272
272
 
273
- static return_type get_ptr(const const_pointer &ptr) BOOST_NOEXCEPT_OR_NOTHROW
273
+ BOOST_CONTAINER_FORCEINLINE static return_type get_ptr(const const_pointer &ptr) BOOST_NOEXCEPT_OR_NOTHROW
274
274
  { return boost::intrusive::pointer_traits<return_type>::const_cast_from(ptr); }
275
275
  };
276
276
 
@@ -278,14 +278,14 @@ template<class Pointer>
278
278
  struct vector_get_ptr_pointer_to_non_const<Pointer, false>
279
279
  {
280
280
  typedef const Pointer & return_type;
281
- static return_type get_ptr(const Pointer &ptr) BOOST_NOEXCEPT_OR_NOTHROW
281
+ BOOST_CONTAINER_FORCEINLINE static return_type get_ptr(const Pointer &ptr) BOOST_NOEXCEPT_OR_NOTHROW
282
282
  { return ptr; }
283
283
  };
284
284
 
285
285
  } //namespace container_detail {
286
286
 
287
287
  template<class MaybeConstPointer>
288
- typename container_detail::vector_get_ptr_pointer_to_non_const<MaybeConstPointer>::return_type
288
+ BOOST_CONTAINER_FORCEINLINE typename container_detail::vector_get_ptr_pointer_to_non_const<MaybeConstPointer>::return_type
289
289
  vector_iterator_get_ptr(const MaybeConstPointer &ptr) BOOST_NOEXCEPT_OR_NOTHROW
290
290
  {
291
291
  return container_detail::vector_get_ptr_pointer_to_non_const<MaybeConstPointer>::get_ptr(ptr);
@@ -380,7 +380,7 @@ struct vector_alloc_holder
380
380
  , m_capacity()
381
381
  {
382
382
  if(initial_size){
383
- pointer reuse = 0;
383
+ pointer reuse = pointer();
384
384
  m_start = this->allocation_command(allocate_new, initial_size, m_capacity = initial_size, reuse);
385
385
  }
386
386
  }
@@ -393,7 +393,7 @@ struct vector_alloc_holder
393
393
  , m_capacity()
394
394
  {
395
395
  if(initial_size){
396
- pointer reuse = 0;
396
+ pointer reuse = pointer();
397
397
  m_start = this->allocation_command(allocate_new, initial_size, m_capacity = initial_size, reuse);
398
398
  }
399
399
  }
@@ -451,14 +451,14 @@ struct vector_alloc_holder
451
451
  , m_capacity(n)
452
452
  {}
453
453
 
454
- ~vector_alloc_holder() BOOST_NOEXCEPT_OR_NOTHROW
454
+ BOOST_CONTAINER_FORCEINLINE ~vector_alloc_holder() BOOST_NOEXCEPT_OR_NOTHROW
455
455
  {
456
456
  if(this->m_capacity){
457
457
  this->alloc().deallocate(this->m_start, this->m_capacity);
458
458
  }
459
459
  }
460
460
 
461
- pointer allocation_command(boost::container::allocation_type command,
461
+ BOOST_CONTAINER_FORCEINLINE pointer allocation_command(boost::container::allocation_type command,
462
462
  size_type limit_size, size_type &prefer_in_recvd_out_size, pointer &reuse)
463
463
  {
464
464
  typedef typename container_detail::version<Allocator>::type alloc_version;
@@ -482,7 +482,7 @@ struct vector_alloc_holder
482
482
  return success;
483
483
  }
484
484
 
485
- size_type next_capacity(size_type additional_objects) const
485
+ BOOST_CONTAINER_FORCEINLINE size_type next_capacity(size_type additional_objects) const
486
486
  {
487
487
  return next_capacity_calculator
488
488
  <size_type, NextCapacityDouble //NextCapacity60Percent
@@ -510,10 +510,10 @@ struct vector_alloc_holder
510
510
  x.m_size = x.m_capacity = 0;
511
511
  }
512
512
 
513
- Allocator &alloc() BOOST_NOEXCEPT_OR_NOTHROW
513
+ BOOST_CONTAINER_FORCEINLINE Allocator &alloc() BOOST_NOEXCEPT_OR_NOTHROW
514
514
  { return *this; }
515
515
 
516
- const Allocator &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
516
+ BOOST_CONTAINER_FORCEINLINE const Allocator &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
517
517
  { return *this; }
518
518
 
519
519
  const pointer &start() const BOOST_NOEXCEPT_OR_NOTHROW { return m_start; }
@@ -525,7 +525,7 @@ struct vector_alloc_holder
525
525
  void priv_first_allocation(size_type cap)
526
526
  {
527
527
  if(cap){
528
- pointer reuse = 0;
528
+ pointer reuse = pointer();
529
529
  m_start = this->allocation_command(allocate_new, cap, cap, reuse);
530
530
  m_capacity = cap;
531
531
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
@@ -534,7 +534,7 @@ struct vector_alloc_holder
534
534
  }
535
535
  }
536
536
 
537
- pointer priv_allocation_command(version_1, boost::container::allocation_type command,
537
+ BOOST_CONTAINER_FORCEINLINE pointer priv_allocation_command(version_1, boost::container::allocation_type command,
538
538
  size_type ,
539
539
  size_type &prefer_in_recvd_out_size,
540
540
  pointer &reuse)
@@ -624,14 +624,14 @@ struct vector_alloc_holder<Allocator, version_0>
624
624
  (this->alloc(), container_detail::to_raw_pointer(holder.start()), n, container_detail::to_raw_pointer(this->start()));
625
625
  }
626
626
 
627
- void priv_first_allocation(size_type cap)
627
+ BOOST_CONTAINER_FORCEINLINE void priv_first_allocation(size_type cap)
628
628
  {
629
629
  if(cap > Allocator::internal_capacity){
630
630
  throw_bad_alloc();
631
631
  }
632
632
  }
633
633
 
634
- void deep_swap(vector_alloc_holder &x)
634
+ BOOST_CONTAINER_FORCEINLINE void deep_swap(vector_alloc_holder &x)
635
635
  {
636
636
  this->priv_deep_swap(x);
637
637
  }
@@ -645,28 +645,28 @@ struct vector_alloc_holder<Allocator, version_0>
645
645
  this->priv_deep_swap(x);
646
646
  }
647
647
 
648
- void swap_resources(vector_alloc_holder &) BOOST_NOEXCEPT_OR_NOTHROW
648
+ BOOST_CONTAINER_FORCEINLINE void swap_resources(vector_alloc_holder &) BOOST_NOEXCEPT_OR_NOTHROW
649
649
  { //Containers with version 0 allocators can't be moved without moving elements one by one
650
650
  throw_bad_alloc();
651
651
  }
652
652
 
653
653
 
654
- void steal_resources(vector_alloc_holder &)
654
+ BOOST_CONTAINER_FORCEINLINE void steal_resources(vector_alloc_holder &)
655
655
  { //Containers with version 0 allocators can't be moved without moving elements one by one
656
656
  throw_bad_alloc();
657
657
  }
658
658
 
659
- Allocator &alloc() BOOST_NOEXCEPT_OR_NOTHROW
659
+ BOOST_CONTAINER_FORCEINLINE Allocator &alloc() BOOST_NOEXCEPT_OR_NOTHROW
660
660
  { return *this; }
661
661
 
662
- const Allocator &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
662
+ BOOST_CONTAINER_FORCEINLINE const Allocator &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
663
663
  { return *this; }
664
664
 
665
- bool try_expand_fwd(size_type at_least)
665
+ BOOST_CONTAINER_FORCEINLINE bool try_expand_fwd(size_type at_least)
666
666
  { return !at_least; }
667
667
 
668
- pointer start() const BOOST_NOEXCEPT_OR_NOTHROW { return Allocator::internal_storage(); }
669
- size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW { return Allocator::internal_capacity; }
668
+ BOOST_CONTAINER_FORCEINLINE pointer start() const BOOST_NOEXCEPT_OR_NOTHROW { return Allocator::internal_storage(); }
669
+ BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW { return Allocator::internal_capacity; }
670
670
  size_type m_size;
671
671
 
672
672
  private:
@@ -765,16 +765,16 @@ class vector
765
765
 
766
766
  protected:
767
767
 
768
- void steal_resources(vector &x)
768
+ BOOST_CONTAINER_FORCEINLINE void steal_resources(vector &x)
769
769
  { return this->m_holder.steal_resources(x.m_holder); }
770
770
 
771
771
  struct initial_capacity_t{};
772
772
  template<class AllocFwd>
773
- vector(initial_capacity_t, pointer initial_memory, size_type capacity, BOOST_FWD_REF(AllocFwd) a)
773
+ BOOST_CONTAINER_FORCEINLINE vector(initial_capacity_t, pointer initial_memory, size_type capacity, BOOST_FWD_REF(AllocFwd) a)
774
774
  : m_holder(initial_memory, capacity, ::boost::forward<AllocFwd>(a))
775
775
  {}
776
776
 
777
- vector(initial_capacity_t, pointer initial_memory, size_type capacity)
777
+ BOOST_CONTAINER_FORCEINLINE vector(initial_capacity_t, pointer initial_memory, size_type capacity)
778
778
  : m_holder(initial_memory, capacity)
779
779
  {}
780
780
 
@@ -792,7 +792,7 @@ class vector
792
792
  //! <b>Throws</b>: Nothing.
793
793
  //!
794
794
  //! <b>Complexity</b>: Constant.
795
- vector() BOOST_NOEXCEPT_OR_NOTHROW
795
+ vector() BOOST_NOEXCEPT_IF(container_detail::is_nothrow_default_constructible<Allocator>::value)
796
796
  : m_holder()
797
797
  {}
798
798
 
@@ -822,38 +822,38 @@ class vector
822
822
  }
823
823
 
824
824
  //! <b>Effects</b>: Constructs a vector that will use a copy of allocator a
825
- //! and inserts n default initialized values.
825
+ //! and inserts n value initialized values.
826
826
  //!
827
827
  //! <b>Throws</b>: If allocator_type's allocation
828
- //! throws or T's default initialization throws.
828
+ //! throws or T's value initialization throws.
829
829
  //!
830
830
  //! <b>Complexity</b>: Linear to n.
831
- //!
832
- //! <b>Note</b>: Non-standard extension
833
- vector(size_type n, default_init_t)
834
- : m_holder(container_detail::uninitialized_size, n)
831
+ explicit vector(size_type n, const allocator_type &a)
832
+ : m_holder(container_detail::uninitialized_size, a, n)
835
833
  {
836
834
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
837
835
  this->num_alloc += n != 0;
838
836
  #endif
839
- boost::container::uninitialized_default_init_alloc_n
837
+ boost::container::uninitialized_value_init_alloc_n
840
838
  (this->m_holder.alloc(), n, this->priv_raw_begin());
841
839
  }
842
840
 
843
841
  //! <b>Effects</b>: Constructs a vector that will use a copy of allocator a
844
- //! and inserts n value initialized values.
842
+ //! and inserts n default initialized values.
845
843
  //!
846
844
  //! <b>Throws</b>: If allocator_type's allocation
847
- //! throws or T's value initialization throws.
845
+ //! throws or T's default initialization throws.
848
846
  //!
849
847
  //! <b>Complexity</b>: Linear to n.
850
- explicit vector(size_type n, const allocator_type &a)
851
- : m_holder(container_detail::uninitialized_size, a, n)
848
+ //!
849
+ //! <b>Note</b>: Non-standard extension
850
+ vector(size_type n, default_init_t)
851
+ : m_holder(container_detail::uninitialized_size, n)
852
852
  {
853
853
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
854
854
  this->num_alloc += n != 0;
855
855
  #endif
856
- boost::container::uninitialized_value_init_alloc_n
856
+ boost::container::uninitialized_default_init_alloc_n
857
857
  (this->m_holder.alloc(), n, this->priv_raw_begin());
858
858
  }
859
859
 
@@ -918,7 +918,11 @@ class vector
918
918
  //!
919
919
  //! <b>Complexity</b>: Linear to the range [first, last).
920
920
  template <class InIt>
921
- vector(InIt first, InIt last)
921
+ vector(InIt first, InIt last
922
+ BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename container_detail::disable_if_c
923
+ < container_detail::is_convertible<InIt BOOST_MOVE_I size_type>::value
924
+ BOOST_MOVE_I container_detail::nat >::type * = 0)
925
+ )
922
926
  : m_holder()
923
927
  { this->assign(first, last); }
924
928
 
@@ -930,7 +934,11 @@ class vector
930
934
  //!
931
935
  //! <b>Complexity</b>: Linear to the range [first, last).
932
936
  template <class InIt>
933
- vector(InIt first, InIt last, const allocator_type& a)
937
+ vector(InIt first, InIt last, const allocator_type& a
938
+ BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename container_detail::disable_if_c
939
+ < container_detail::is_convertible<InIt BOOST_MOVE_I size_type>::value
940
+ BOOST_MOVE_I container_detail::nat >::type * = 0)
941
+ )
934
942
  : m_holder(a)
935
943
  { this->assign(first, last); }
936
944
 
@@ -1063,7 +1071,7 @@ class vector
1063
1071
  //! <b>Throws</b>: If memory allocation throws or T's copy/move constructor/assignment throws.
1064
1072
  //!
1065
1073
  //! <b>Complexity</b>: Linear to the number of elements in x.
1066
- vector& operator=(BOOST_COPY_ASSIGN_REF(vector) x)
1074
+ BOOST_CONTAINER_FORCEINLINE vector& operator=(BOOST_COPY_ASSIGN_REF(vector) x)
1067
1075
  {
1068
1076
  if (&x != this){
1069
1077
  this->priv_copy_assign(x);
@@ -1075,7 +1083,7 @@ class vector
1075
1083
  //! <b>Effects</b>: Make *this container contains elements from il.
1076
1084
  //!
1077
1085
  //! <b>Complexity</b>: Linear to the range [il.begin(), il.end()).
1078
- vector& operator=(std::initializer_list<value_type> il)
1086
+ BOOST_CONTAINER_FORCEINLINE vector& operator=(std::initializer_list<value_type> il)
1079
1087
  {
1080
1088
  this->assign(il.begin(), il.end());
1081
1089
  return *this;
@@ -1093,9 +1101,9 @@ class vector
1093
1101
  //! <b>Complexity</b>: Constant if allocator_traits_type::
1094
1102
  //! propagate_on_container_move_assignment is true or
1095
1103
  //! this->get>allocator() == x.get_allocator(). Linear otherwise.
1096
- vector& operator=(BOOST_RV_REF(vector) x)
1104
+ BOOST_CONTAINER_FORCEINLINE vector& operator=(BOOST_RV_REF(vector) x)
1097
1105
  BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value
1098
- || allocator_traits_type::is_always_equal::value)
1106
+ || allocator_traits_type::is_always_equal::value)
1099
1107
  {
1100
1108
  BOOST_ASSERT(&x != this);
1101
1109
  this->priv_move_assign(boost::move(x));
@@ -1115,7 +1123,7 @@ class vector
1115
1123
  //!
1116
1124
  //! <b>Note</b>: Non-standard extension to support static_vector
1117
1125
  template<class OtherAllocator>
1118
- typename container_detail::enable_if_and
1126
+ BOOST_CONTAINER_FORCEINLINE typename container_detail::enable_if_and
1119
1127
  < vector&
1120
1128
  , container_detail::is_version<OtherAllocator, 0>
1121
1129
  , container_detail::is_different<OtherAllocator, allocator_type>
@@ -1137,7 +1145,7 @@ class vector
1137
1145
  //!
1138
1146
  //! <b>Note</b>: Non-standard extension to support static_vector
1139
1147
  template<class OtherAllocator>
1140
- typename container_detail::enable_if_and
1148
+ BOOST_CONTAINER_FORCEINLINE typename container_detail::enable_if_and
1141
1149
  < vector&
1142
1150
  , container_detail::is_version<OtherAllocator, 0>
1143
1151
  , container_detail::is_different<OtherAllocator, allocator_type>
@@ -1193,7 +1201,7 @@ class vector
1193
1201
  //! <b>Throws</b>: If memory allocation throws or
1194
1202
  //! T's constructor from dereferencing iniializer_list iterator throws.
1195
1203
  //!
1196
- void assign(std::initializer_list<T> il)
1204
+ BOOST_CONTAINER_FORCEINLINE void assign(std::initializer_list<T> il)
1197
1205
  {
1198
1206
  this->assign(il.begin(), il.end());
1199
1207
  }
@@ -1269,7 +1277,7 @@ class vector
1269
1277
  //! T's copy/move constructor/assignment throws.
1270
1278
  //!
1271
1279
  //! <b>Complexity</b>: Linear to n.
1272
- void assign(size_type n, const value_type& val)
1280
+ BOOST_CONTAINER_FORCEINLINE void assign(size_type n, const value_type& val)
1273
1281
  { this->assign(cvalue_iterator(val, n), cvalue_iterator()); }
1274
1282
 
1275
1283
  //! <b>Effects</b>: Returns a copy of the internal allocator.
@@ -1287,7 +1295,7 @@ class vector
1287
1295
  //! <b>Complexity</b>: Constant.
1288
1296
  //!
1289
1297
  //! <b>Note</b>: Non-standard extension.
1290
- stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
1298
+ BOOST_CONTAINER_FORCEINLINE stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
1291
1299
  { return this->m_holder.alloc(); }
1292
1300
 
1293
1301
  //! <b>Effects</b>: Returns a reference to the internal allocator.
@@ -1297,7 +1305,7 @@ class vector
1297
1305
  //! <b>Complexity</b>: Constant.
1298
1306
  //!
1299
1307
  //! <b>Note</b>: Non-standard extension.
1300
- const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1308
+ BOOST_CONTAINER_FORCEINLINE const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1301
1309
  { return this->m_holder.alloc(); }
1302
1310
 
1303
1311
  //////////////////////////////////////////////
@@ -1311,7 +1319,7 @@ class vector
1311
1319
  //! <b>Throws</b>: Nothing.
1312
1320
  //!
1313
1321
  //! <b>Complexity</b>: Constant.
1314
- iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
1322
+ BOOST_CONTAINER_FORCEINLINE iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
1315
1323
  { return iterator(this->m_holder.start()); }
1316
1324
 
1317
1325
  //! <b>Effects</b>: Returns a const_iterator to the first element contained in the vector.
@@ -1319,7 +1327,7 @@ class vector
1319
1327
  //! <b>Throws</b>: Nothing.
1320
1328
  //!
1321
1329
  //! <b>Complexity</b>: Constant.
1322
- const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
1330
+ BOOST_CONTAINER_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
1323
1331
  { return const_iterator(this->m_holder.start()); }
1324
1332
 
1325
1333
  //! <b>Effects</b>: Returns an iterator to the end of the vector.
@@ -1327,7 +1335,7 @@ class vector
1327
1335
  //! <b>Throws</b>: Nothing.
1328
1336
  //!
1329
1337
  //! <b>Complexity</b>: Constant.
1330
- iterator end() BOOST_NOEXCEPT_OR_NOTHROW
1338
+ BOOST_CONTAINER_FORCEINLINE iterator end() BOOST_NOEXCEPT_OR_NOTHROW
1331
1339
  { return iterator(this->m_holder.start() + this->m_holder.m_size); }
1332
1340
 
1333
1341
  //! <b>Effects</b>: Returns a const_iterator to the end of the vector.
@@ -1335,7 +1343,7 @@ class vector
1335
1343
  //! <b>Throws</b>: Nothing.
1336
1344
  //!
1337
1345
  //! <b>Complexity</b>: Constant.
1338
- const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
1346
+ BOOST_CONTAINER_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
1339
1347
  { return this->cend(); }
1340
1348
 
1341
1349
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
@@ -1344,7 +1352,7 @@ class vector
1344
1352
  //! <b>Throws</b>: Nothing.
1345
1353
  //!
1346
1354
  //! <b>Complexity</b>: Constant.
1347
- reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
1355
+ BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
1348
1356
  { return reverse_iterator(this->end()); }
1349
1357
 
1350
1358
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
@@ -1353,7 +1361,7 @@ class vector
1353
1361
  //! <b>Throws</b>: Nothing.
1354
1362
  //!
1355
1363
  //! <b>Complexity</b>: Constant.
1356
- const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1364
+ BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1357
1365
  { return this->crbegin(); }
1358
1366
 
1359
1367
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
@@ -1362,7 +1370,7 @@ class vector
1362
1370
  //! <b>Throws</b>: Nothing.
1363
1371
  //!
1364
1372
  //! <b>Complexity</b>: Constant.
1365
- reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
1373
+ BOOST_CONTAINER_FORCEINLINE reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
1366
1374
  { return reverse_iterator(this->begin()); }
1367
1375
 
1368
1376
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
@@ -1371,7 +1379,7 @@ class vector
1371
1379
  //! <b>Throws</b>: Nothing.
1372
1380
  //!
1373
1381
  //! <b>Complexity</b>: Constant.
1374
- const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
1382
+ BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
1375
1383
  { return this->crend(); }
1376
1384
 
1377
1385
  //! <b>Effects</b>: Returns a const_iterator to the first element contained in the vector.
@@ -1379,7 +1387,7 @@ class vector
1379
1387
  //! <b>Throws</b>: Nothing.
1380
1388
  //!
1381
1389
  //! <b>Complexity</b>: Constant.
1382
- const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1390
+ BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1383
1391
  { return const_iterator(this->m_holder.start()); }
1384
1392
 
1385
1393
  //! <b>Effects</b>: Returns a const_iterator to the end of the vector.
@@ -1387,7 +1395,7 @@ class vector
1387
1395
  //! <b>Throws</b>: Nothing.
1388
1396
  //!
1389
1397
  //! <b>Complexity</b>: Constant.
1390
- const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
1398
+ BOOST_CONTAINER_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
1391
1399
  { return const_iterator(this->m_holder.start() + this->m_holder.m_size); }
1392
1400
 
1393
1401
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
@@ -1396,7 +1404,7 @@ class vector
1396
1404
  //! <b>Throws</b>: Nothing.
1397
1405
  //!
1398
1406
  //! <b>Complexity</b>: Constant.
1399
- const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1407
+ BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1400
1408
  { return const_reverse_iterator(this->end());}
1401
1409
 
1402
1410
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
@@ -1405,7 +1413,7 @@ class vector
1405
1413
  //! <b>Throws</b>: Nothing.
1406
1414
  //!
1407
1415
  //! <b>Complexity</b>: Constant.
1408
- const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
1416
+ BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
1409
1417
  { return const_reverse_iterator(this->begin()); }
1410
1418
 
1411
1419
  //////////////////////////////////////////////
@@ -1419,7 +1427,7 @@ class vector
1419
1427
  //! <b>Throws</b>: Nothing.
1420
1428
  //!
1421
1429
  //! <b>Complexity</b>: Constant.
1422
- bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
1430
+ BOOST_CONTAINER_FORCEINLINE bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
1423
1431
  { return !this->m_holder.m_size; }
1424
1432
 
1425
1433
  //! <b>Effects</b>: Returns the number of the elements contained in the vector.
@@ -1427,7 +1435,7 @@ class vector
1427
1435
  //! <b>Throws</b>: Nothing.
1428
1436
  //!
1429
1437
  //! <b>Complexity</b>: Constant.
1430
- size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
1438
+ BOOST_CONTAINER_FORCEINLINE size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
1431
1439
  { return this->m_holder.m_size; }
1432
1440
 
1433
1441
  //! <b>Effects</b>: Returns the largest possible size of the vector.
@@ -1435,7 +1443,7 @@ class vector
1435
1443
  //! <b>Throws</b>: Nothing.
1436
1444
  //!
1437
1445
  //! <b>Complexity</b>: Constant.
1438
- size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
1446
+ BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
1439
1447
  { return allocator_traits_type::max_size(this->m_holder.alloc()); }
1440
1448
 
1441
1449
  //! <b>Effects</b>: Inserts or erases elements at the end such that
@@ -1473,7 +1481,7 @@ class vector
1473
1481
  //! <b>Throws</b>: Nothing.
1474
1482
  //!
1475
1483
  //! <b>Complexity</b>: Constant.
1476
- size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
1484
+ BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
1477
1485
  { return this->m_holder.capacity(); }
1478
1486
 
1479
1487
  //! <b>Effects</b>: If n is less than or equal to capacity(), this call has no
@@ -1482,7 +1490,7 @@ class vector
1482
1490
  //! n; otherwise, capacity() is unchanged. In either case, size() is unchanged.
1483
1491
  //!
1484
1492
  //! <b>Throws</b>: If memory allocation allocation throws or T's copy/move constructor throws.
1485
- void reserve(size_type new_cap)
1493
+ BOOST_CONTAINER_FORCEINLINE void reserve(size_type new_cap)
1486
1494
  {
1487
1495
  if (this->capacity() < new_cap){
1488
1496
  this->priv_reserve_no_capacity(new_cap, alloc_version());
@@ -1495,7 +1503,7 @@ class vector
1495
1503
  //! <b>Throws</b>: If memory allocation throws, or T's copy/move constructor throws.
1496
1504
  //!
1497
1505
  //! <b>Complexity</b>: Linear to size().
1498
- void shrink_to_fit()
1506
+ BOOST_CONTAINER_FORCEINLINE void shrink_to_fit()
1499
1507
  { this->priv_shrink_to_fit(alloc_version()); }
1500
1508
 
1501
1509
  //////////////////////////////////////////////
@@ -1622,11 +1630,10 @@ class vector
1622
1630
  return const_iterator(this->m_holder.start()+n);
1623
1631
  }
1624
1632
 
1625
- //! <b>Requires</b>: size() >= n.
1633
+ //! <b>Requires</b>: begin() <= p <= end().
1626
1634
  //!
1627
- //! <b>Effects</b>: Returns an iterator to the nth element
1628
- //! from the beginning of the container. Returns end()
1629
- //! if n == size().
1635
+ //! <b>Effects</b>: Returns the index of the element pointed by p
1636
+ //! and size() if p == end().
1630
1637
  //!
1631
1638
  //! <b>Throws</b>: Nothing.
1632
1639
  //!
@@ -1717,21 +1724,25 @@ class vector
1717
1724
  //! <b>Effects</b>: Inserts an object of type T constructed with
1718
1725
  //! std::forward<Args>(args)... in the end of the vector.
1719
1726
  //!
1727
+ //! <b>Returns</b>: A reference to the created object.
1728
+ //!
1720
1729
  //! <b>Throws</b>: If memory allocation throws or the in-place constructor throws or
1721
1730
  //! T's copy/move constructor throws.
1722
1731
  //!
1723
1732
  //! <b>Complexity</b>: Amortized constant time.
1724
1733
  template<class ...Args>
1725
- void emplace_back(BOOST_FWD_REF(Args)...args)
1734
+ BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_FWD_REF(Args)...args)
1726
1735
  {
1727
1736
  if (BOOST_LIKELY(this->room_enough())){
1728
1737
  //There is more memory, just construct a new object at the end
1729
- allocator_traits_type::construct(this->m_holder.alloc(), this->priv_raw_end(), ::boost::forward<Args>(args)...);
1738
+ T* const p = this->priv_raw_end();
1739
+ allocator_traits_type::construct(this->m_holder.alloc(), p, ::boost::forward<Args>(args)...);
1730
1740
  ++this->m_holder.m_size;
1741
+ return *p;
1731
1742
  }
1732
1743
  else{
1733
1744
  typedef container_detail::insert_emplace_proxy<Allocator, T*, Args...> type;
1734
- this->priv_forward_range_insert_no_capacity
1745
+ return *this->priv_forward_range_insert_no_capacity
1735
1746
  (this->back_ptr(), 1, type(::boost::forward<Args>(args)...), alloc_version());
1736
1747
  }
1737
1748
  }
@@ -1745,7 +1756,7 @@ class vector
1745
1756
  //!
1746
1757
  //! <b>Note</b>: Non-standard extension.
1747
1758
  template<class ...Args>
1748
- bool stable_emplace_back(BOOST_FWD_REF(Args)...args)
1759
+ BOOST_CONTAINER_FORCEINLINE bool stable_emplace_back(BOOST_FWD_REF(Args)...args)
1749
1760
  {
1750
1761
  const bool is_room_enough = this->room_enough() || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(1u));
1751
1762
  if (BOOST_LIKELY(is_room_enough)){
@@ -1780,22 +1791,24 @@ class vector
1780
1791
 
1781
1792
  #define BOOST_CONTAINER_VECTOR_EMPLACE_CODE(N) \
1782
1793
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1783
- void emplace_back(BOOST_MOVE_UREF##N)\
1794
+ BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_MOVE_UREF##N)\
1784
1795
  {\
1785
1796
  if (BOOST_LIKELY(this->room_enough())){\
1797
+ T* const p = this->priv_raw_end();\
1786
1798
  allocator_traits_type::construct (this->m_holder.alloc()\
1787
1799
  , this->priv_raw_end() BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
1788
1800
  ++this->m_holder.m_size;\
1801
+ return *p;\
1789
1802
  }\
1790
1803
  else{\
1791
1804
  typedef container_detail::insert_emplace_proxy_arg##N<Allocator, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
1792
- this->priv_forward_range_insert_no_capacity\
1805
+ return *this->priv_forward_range_insert_no_capacity\
1793
1806
  ( this->back_ptr(), 1, type(BOOST_MOVE_FWD##N), alloc_version());\
1794
1807
  }\
1795
1808
  }\
1796
1809
  \
1797
1810
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1798
- bool stable_emplace_back(BOOST_MOVE_UREF##N)\
1811
+ BOOST_CONTAINER_FORCEINLINE bool stable_emplace_back(BOOST_MOVE_UREF##N)\
1799
1812
  {\
1800
1813
  const bool is_room_enough = this->room_enough() || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(1u));\
1801
1814
  if (BOOST_LIKELY(is_room_enough)){\
@@ -2239,12 +2252,12 @@ class vector
2239
2252
  size_type *indexes = 0;
2240
2253
  while(remaining){
2241
2254
  //Query for room to store indexes in the remaining buffer
2242
- uintptr_t const szt_align_mask = container_detail::alignment_of<size_type>::value - 1;
2255
+ boost::uintptr_t const szt_align_mask = container_detail::alignment_of<size_type>::value - 1;
2243
2256
  boost::uintptr_t const addr = boost::uintptr_t(this->priv_raw_begin() + s + n);
2244
2257
  boost::uintptr_t const capaddr = boost::uintptr_t(this->priv_raw_begin() + c);
2245
2258
  boost::uintptr_t const aligned_addr = (addr + szt_align_mask) & ~szt_align_mask;
2246
2259
  indexes = reinterpret_cast<size_type *>(aligned_addr);
2247
- std::size_t index_capacity = (aligned_addr >= capaddr) ? 0u : (capaddr - addr)/sizeof(size_type);
2260
+ std::size_t index_capacity = (aligned_addr >= capaddr) ? 0u : (capaddr - aligned_addr)/sizeof(size_type);
2248
2261
 
2249
2262
  //Capacity is constant, we're not going to change it
2250
2263
  if(index_capacity < PosCount){
@@ -2536,7 +2549,7 @@ class vector
2536
2549
  //buffer or expand the old one.
2537
2550
  bool same_buffer_start;
2538
2551
  size_type real_cap = 0;
2539
- pointer reuse = 0;
2552
+ pointer reuse(this->m_holder.start());
2540
2553
  pointer const ret(this->m_holder.allocation_command(allocate_new | expand_fwd | expand_bwd, new_cap, real_cap = new_cap, reuse));
2541
2554
 
2542
2555
  //Check for forward expansion
@@ -3098,7 +3111,10 @@ class vector
3098
3111
  old_values_destroyer.shrink_forward(new_size-s_before);
3099
3112
  this->m_holder.m_size = new_size;
3100
3113
  //Now move remaining last objects in the old buffer begin
3101
- ::boost::container::move(pos + raw_gap, old_finish, old_start);
3114
+ T * const remaining_pos = pos + raw_gap;
3115
+ if(remaining_pos != old_start){ //Make sure data has to be moved
3116
+ ::boost::container::move(remaining_pos, old_finish, old_start);
3117
+ }
3102
3118
  //Once moved, avoid calling the destructors if trivial after move
3103
3119
  if(value_traits::trivial_dctr_after_move){
3104
3120
  old_values_destroyer.release();
@@ -3106,7 +3122,7 @@ class vector
3106
3122
  }
3107
3123
  else{ //If trivial destructor, we can uninitialized copy + copy in a single uninitialized copy
3108
3124
  ::boost::container::uninitialized_move_alloc_n
3109
- (this->m_holder.alloc(), pos, old_finish - pos, new_start + before_plus_new);
3125
+ (this->m_holder.alloc(), pos, static_cast<size_type>(old_finish - pos), new_start + before_plus_new);
3110
3126
  this->m_holder.m_size = new_size;
3111
3127
  old_values_destroyer.release();
3112
3128
  }
@@ -3238,8 +3254,9 @@ class vector
3238
3254
  const size_type rest_new = n - mid_n;
3239
3255
  insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), old_start, rest_new);
3240
3256
  T* const move_start = old_start + rest_new;
3241
- //Displace old_end
3242
- T* const move_end = ::boost::container::move(pos, old_finish, move_start);
3257
+ //Displace old_end, but make sure data has to be moved
3258
+ T* const move_end = move_start != pos ? ::boost::container::move(pos, old_finish, move_start)
3259
+ : old_finish;
3243
3260
  //Destroy remaining moved elements from old_end except if they
3244
3261
  //have trivial destructor after being moved
3245
3262
  size_type n_destroy = s_before - n;