passenger 5.3.7 → 6.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3185) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +651 -19
  3. data/CONTRIBUTING.md +1 -1
  4. data/CONTRIBUTORS +26 -0
  5. data/LICENSE +1 -1
  6. data/README.md +5 -12
  7. data/Rakefile +15 -4
  8. data/bin/passenger +2 -2
  9. data/bin/passenger-config +2 -2
  10. data/bin/passenger-install-apache2-module +7 -2
  11. data/bin/passenger-install-nginx-module +25 -8
  12. data/bin/passenger-memory-stats +67 -14
  13. data/bin/passenger-status +46 -6
  14. data/build/agent.rb +5 -3
  15. data/build/apache2.rb +3 -3
  16. data/build/basics.rb +12 -6
  17. data/build/common_library.rb +8 -7
  18. data/build/cxx_tests.rb +20 -9
  19. data/build/integration_tests.rb +10 -9
  20. data/build/misc.rb +5 -3
  21. data/build/nginx.rb +2 -2
  22. data/build/node_tests.rb +2 -2
  23. data/build/oxt_tests.rb +2 -2
  24. data/build/packaging.rb +6 -4
  25. data/build/ruby_extension.rb +2 -2
  26. data/build/ruby_tests.rb +3 -3
  27. data/build/schema_printer.rb +2 -2
  28. data/build/support/cplusplus.rb +2 -2
  29. data/build/support/cxx_dependency_map.rb +329 -59
  30. data/build/support/general.rb +2 -2
  31. data/build/support/vendor/cxx_hinted_parser/LICENSE.md +1 -1
  32. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +2 -2
  33. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser.rb +2 -2
  34. data/build/support/vendor/cxxcodebuilder/LICENSE.md +1 -1
  35. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +57 -4
  36. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +2 -2
  37. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder.rb +2 -2
  38. data/build/test_basics.rb +29 -15
  39. data/dev/copy_boost_headers +142 -79
  40. data/dev/index_cxx_dependencies.rb +1 -1
  41. data/dev/nginx_version_sha256 +72 -0
  42. data/dev/websocketpp.patch +39 -0
  43. data/doc/DesignAspects/LimitedGemDependencies.md +39 -0
  44. data/doc/DesignAspects/NoGemActivationDuringRubyLoaderInitialization.md +27 -0
  45. data/doc/templates/markdown.html.erb +2 -6
  46. data/package.json +20 -18
  47. data/passenger.gemspec +17 -3
  48. data/resources/mime.types +1 -0
  49. data/resources/release.txt +1 -0
  50. data/resources/templates/apache2/deployment_example.txt.erb +1 -1
  51. data/resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb +1 -0
  52. data/resources/templates/error_renderer/with_details/dist/bundle.js +2 -33
  53. data/resources/templates/error_renderer/with_details/dist/styles.css +2 -2
  54. data/resources/templates/error_renderer/with_details/src/GetHelpView.jsx +1 -1
  55. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.css +0 -0
  56. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.js +0 -0
  57. data/resources/templates/error_renderer/with_details/src/bootstrap/config.json +0 -0
  58. data/resources/templates/error_renderer/with_details/src/index.html.template +0 -2
  59. data/resources/templates/error_renderer/with_details/webpack.config.js +13 -16
  60. data/resources/templates/error_renderer/without_details/dist/bundle.js +0 -1
  61. data/resources/templates/error_renderer/without_details/dist/styles.css +1 -1
  62. data/resources/templates/error_renderer/without_details/webpack.config.js +13 -16
  63. data/resources/templates/nginx/deployment_example.txt.erb +1 -1
  64. data/resources/templates/standalone/global.erb +4 -0
  65. data/resources/templates/standalone/http.erb +3 -0
  66. data/resources/templates/standalone/rails_asset_pipeline.erb +1 -1
  67. data/resources/templates/standalone/server.erb +4 -0
  68. data/src/agent/AgentMain.cpp +7 -9
  69. data/src/agent/Core/AdminPanelConnector.h +5 -6
  70. data/src/agent/Core/ApiServer.h +38 -3
  71. data/src/agent/Core/ApplicationPool/AbstractSession.h +2 -2
  72. data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +2 -2
  73. data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +2 -2
  74. data/src/agent/Core/ApplicationPool/Common.h +2 -2
  75. data/src/agent/Core/ApplicationPool/Context.h +7 -4
  76. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +10 -2
  77. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +14 -6
  78. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +10 -2
  79. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +11 -2
  80. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +12 -3
  81. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +86 -6
  82. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +42 -12
  83. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +10 -2
  84. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +15 -4
  85. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +10 -2
  86. data/src/agent/Core/ApplicationPool/Group.h +19 -8
  87. data/src/agent/Core/ApplicationPool/Implementation.cpp +2 -3
  88. data/src/agent/Core/ApplicationPool/Options.h +36 -13
  89. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +7 -2
  90. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +8 -3
  91. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +7 -2
  92. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +7 -2
  93. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +7 -2
  94. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +7 -2
  95. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +8 -3
  96. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +18 -4
  97. data/src/agent/Core/ApplicationPool/Pool.h +12 -6
  98. data/src/agent/Core/ApplicationPool/Process.cpp +2 -2
  99. data/src/agent/Core/ApplicationPool/Process.h +27 -8
  100. data/src/agent/Core/ApplicationPool/Session.h +8 -3
  101. data/src/agent/Core/ApplicationPool/Socket.h +2 -2
  102. data/src/agent/Core/ApplicationPool/TestSession.h +2 -2
  103. data/src/agent/Core/Config.h +39 -8
  104. data/src/agent/Core/ConfigChange.cpp +2 -2
  105. data/src/agent/Core/ConfigChange.h +2 -2
  106. data/src/agent/Core/Controller/AppResponse.h +2 -3
  107. data/src/agent/Core/Controller/BufferBody.cpp +2 -2
  108. data/src/agent/Core/Controller/CheckoutSession.cpp +50 -16
  109. data/src/agent/Core/Controller/Client.h +2 -2
  110. data/src/agent/Core/Controller/Config.cpp +2 -2
  111. data/src/agent/Core/Controller/Config.h +55 -13
  112. data/src/agent/Core/Controller/ForwardResponse.cpp +15 -2
  113. data/src/agent/Core/Controller/Hooks.cpp +2 -2
  114. data/src/agent/Core/Controller/Implementation.cpp +2 -2
  115. data/src/agent/Core/Controller/InitRequest.cpp +21 -10
  116. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +5 -2
  117. data/src/agent/Core/Controller/InternalUtils.cpp +34 -8
  118. data/src/agent/Core/Controller/Miscellaneous.cpp +2 -2
  119. data/src/agent/Core/Controller/Request.h +2 -2
  120. data/src/agent/Core/Controller/SendRequest.cpp +4 -4
  121. data/src/agent/Core/Controller/StateInspection.cpp +2 -2
  122. data/src/agent/Core/Controller/TurboCaching.h +2 -2
  123. data/src/agent/Core/Controller.h +8 -3
  124. data/src/agent/Core/CoreMain.cpp +78 -54
  125. data/src/agent/Core/OptionParser.h +23 -2
  126. data/src/agent/Core/ResponseCache.h +5 -4
  127. data/src/agent/Core/SecurityUpdateChecker.h +7 -7
  128. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +22 -2
  129. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +2 -2
  130. data/src/agent/Core/SpawningKit/Config.h +26 -2
  131. data/src/agent/Core/SpawningKit/Context.h +3 -2
  132. data/src/agent/Core/SpawningKit/DirectSpawner.h +2 -2
  133. data/src/agent/Core/SpawningKit/DummySpawner.h +2 -2
  134. data/src/agent/Core/SpawningKit/ErrorRenderer.h +7 -2
  135. data/src/agent/Core/SpawningKit/Exceptions.h +2 -2
  136. data/src/agent/Core/SpawningKit/Factory.h +2 -2
  137. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +3 -3
  138. data/src/agent/Core/SpawningKit/Handshake/Perform.h +8 -7
  139. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +8 -56
  140. data/src/agent/Core/SpawningKit/Handshake/Session.h +5 -2
  141. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +12 -6
  142. data/src/agent/Core/SpawningKit/Journey.h +2 -2
  143. data/src/agent/Core/SpawningKit/PipeWatcher.h +21 -6
  144. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +2 -2
  145. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +2 -2
  146. data/src/agent/Core/SpawningKit/Result.h +2 -2
  147. data/src/agent/Core/SpawningKit/SmartSpawner.h +9 -5
  148. data/src/agent/Core/SpawningKit/Spawner.h +29 -7
  149. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +17 -10
  150. data/src/agent/Core/TelemetryCollector.h +4 -3
  151. data/src/agent/ExecHelper/ExecHelperMain.cpp +12 -14
  152. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +195 -0
  153. data/src/agent/MainFunctions.h +38 -0
  154. data/src/agent/Shared/ApiAccountUtils.h +2 -2
  155. data/src/agent/Shared/ApiServerUtils.h +6 -5
  156. data/src/agent/Shared/ApplicationPoolApiKey.h +4 -2
  157. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +90 -11
  158. data/src/agent/Shared/Fundamentals/AbortHandler.h +4 -2
  159. data/src/agent/Shared/Fundamentals/Initialization.cpp +12 -6
  160. data/src/agent/Shared/Fundamentals/Initialization.h +5 -5
  161. data/src/agent/Shared/Fundamentals/Utils.cpp +2 -2
  162. data/src/agent/Shared/Fundamentals/Utils.h +2 -2
  163. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +36 -12
  164. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +3 -2
  165. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +10 -6
  166. data/src/agent/Watchdog/AgentWatcher.cpp +2 -2
  167. data/src/agent/Watchdog/ApiServer.h +3 -3
  168. data/src/agent/Watchdog/Config.h +22 -3
  169. data/src/agent/Watchdog/CoreWatcher.cpp +2 -2
  170. data/src/agent/Watchdog/InstanceDirToucher.cpp +3 -3
  171. data/src/agent/Watchdog/WatchdogMain.cpp +23 -22
  172. data/src/apache2_module/Bucket.cpp +2 -2
  173. data/src/apache2_module/Bucket.h +2 -2
  174. data/src/apache2_module/CBindings.cpp +2 -2
  175. data/src/apache2_module/Config.cpp +3 -3
  176. data/src/apache2_module/Config.h +2 -2
  177. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +68 -28
  178. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
  179. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +32 -2
  180. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +2 -2
  181. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +121 -3
  182. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +2 -2
  183. data/src/apache2_module/ConfigGeneral/Common.h +2 -2
  184. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +7 -5
  185. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +2 -2
  186. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +25 -2
  187. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +2 -2
  188. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +14 -2
  189. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +2 -2
  190. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +65 -2
  191. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
  192. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +37 -2
  193. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +2 -2
  194. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +84 -4
  195. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +5 -2
  196. data/src/apache2_module/DirectoryMapper.h +16 -5
  197. data/src/apache2_module/Hooks.cpp +51 -7
  198. data/src/apache2_module/Hooks.h +2 -2
  199. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +31 -2
  200. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
  201. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +57 -21
  202. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +4 -3
  203. data/src/apache2_module/Utils.h +2 -2
  204. data/src/apache2_module/mod_passenger.c +2 -2
  205. data/src/cxx_supportlib/Algorithms/Hasher.cpp +2 -2
  206. data/src/cxx_supportlib/Algorithms/Hasher.h +2 -2
  207. data/src/cxx_supportlib/Algorithms/MovingAverage.h +2 -8
  208. data/src/cxx_supportlib/AppLocalConfigFileUtils.h +148 -0
  209. data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +14 -3
  210. data/src/cxx_supportlib/AppTypeDetector/CBindings.h +4 -2
  211. data/src/cxx_supportlib/AppTypeDetector/Detector.h +40 -6
  212. data/src/cxx_supportlib/BackgroundEventLoop.cpp +7 -3
  213. data/src/cxx_supportlib/BackgroundEventLoop.h +2 -2
  214. data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +2 -2
  215. data/src/cxx_supportlib/ConfigKit/Common.h +3 -3
  216. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +2 -2
  217. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +2 -2
  218. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +2 -2
  219. data/src/cxx_supportlib/ConfigKit/Schema.h +3 -3
  220. data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +2 -2
  221. data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
  222. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +2 -2
  223. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +2 -2
  224. data/src/cxx_supportlib/ConfigKit/Translator.h +3 -3
  225. data/src/cxx_supportlib/ConfigKit/Utils.h +2 -2
  226. data/src/cxx_supportlib/Constants.h +7 -5
  227. data/src/cxx_supportlib/Constants.h.cxxcodebuilder +2 -2
  228. data/src/cxx_supportlib/DataStructures/HashMap.h +2 -2
  229. data/src/cxx_supportlib/DataStructures/HashedStaticString.h +4 -2
  230. data/src/cxx_supportlib/DataStructures/LString.cpp +2 -2
  231. data/src/cxx_supportlib/DataStructures/LString.h +6 -2
  232. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +3 -3
  233. data/src/cxx_supportlib/DataStructures/StringMap.h +2 -3
  234. data/src/cxx_supportlib/Exceptions.cpp +2 -2
  235. data/src/cxx_supportlib/Exceptions.h +2 -2
  236. data/src/cxx_supportlib/FileDescriptor.h +10 -2
  237. data/src/cxx_supportlib/FileTools/FileManip.cpp +12 -3
  238. data/src/cxx_supportlib/FileTools/FileManip.h +18 -2
  239. data/src/cxx_supportlib/FileTools/LargeFiles.h +2 -2
  240. data/src/cxx_supportlib/FileTools/PathManip.cpp +13 -4
  241. data/src/cxx_supportlib/FileTools/PathManip.h +2 -2
  242. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +2 -2
  243. data/src/cxx_supportlib/FileTools/PathManipCBindings.h +2 -2
  244. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +2 -2
  245. data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +2 -2
  246. data/src/cxx_supportlib/Hooks.h +3 -2
  247. data/src/cxx_supportlib/IOTools/BufferedIO.h +3 -3
  248. data/src/cxx_supportlib/IOTools/IOUtils.cpp +8 -12
  249. data/src/cxx_supportlib/IOTools/IOUtils.h +2 -2
  250. data/src/cxx_supportlib/IOTools/MessageIO.h +3 -3
  251. data/src/cxx_supportlib/IOTools/MessageSerialization.h +2 -2
  252. data/src/cxx_supportlib/InstanceDirectory.h +2 -2
  253. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +5 -5
  254. data/src/cxx_supportlib/JsonTools/Autocast.h +2 -2
  255. data/src/cxx_supportlib/JsonTools/CBindings.cpp +2 -4
  256. data/src/cxx_supportlib/JsonTools/CBindings.h +2 -2
  257. data/src/cxx_supportlib/JsonTools/JsonUtils.h +6 -6
  258. data/src/cxx_supportlib/LoggingKit/Assert.h +2 -2
  259. data/src/cxx_supportlib/LoggingKit/Config.h +4 -2
  260. data/src/cxx_supportlib/LoggingKit/Context.h +18 -23
  261. data/src/cxx_supportlib/LoggingKit/Forward.h +2 -4
  262. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +53 -83
  263. data/src/cxx_supportlib/LoggingKit/Logging.h +2 -2
  264. data/src/cxx_supportlib/LoggingKit/LoggingKit.h +2 -2
  265. data/src/cxx_supportlib/LveLoggingDecorator.h +2 -2
  266. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +14 -6
  267. data/src/cxx_supportlib/MemoryKit/mbuf.h +3 -3
  268. data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
  269. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
  270. data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +2 -2
  271. data/src/cxx_supportlib/ProcessManagement/Ruby.h +2 -2
  272. data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +2 -2
  273. data/src/cxx_supportlib/ProcessManagement/Spawn.h +2 -2
  274. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +3 -3
  275. data/src/cxx_supportlib/ProcessManagement/Utils.h +2 -2
  276. data/src/cxx_supportlib/RandomGenerator.h +2 -2
  277. data/src/cxx_supportlib/ResourceLocator.h +3 -3
  278. data/src/cxx_supportlib/SafeLibev.h +6 -6
  279. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +5 -96
  280. data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -10
  281. data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +2 -2
  282. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +3 -3
  283. data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
  284. data/src/cxx_supportlib/ServerKit/Client.h +2 -2
  285. data/src/cxx_supportlib/ServerKit/ClientRef.h +2 -2
  286. data/src/cxx_supportlib/ServerKit/Config.h +2 -2
  287. data/src/cxx_supportlib/ServerKit/Context.h +8 -2
  288. data/src/cxx_supportlib/ServerKit/CookieUtils.h +2 -2
  289. data/src/cxx_supportlib/ServerKit/Errors.h +5 -4
  290. data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +2 -2
  291. data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +2 -2
  292. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +2 -2
  293. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
  294. data/src/cxx_supportlib/ServerKit/HeaderTable.h +2 -2
  295. data/src/cxx_supportlib/ServerKit/Hooks.h +4 -4
  296. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +3 -3
  297. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +2 -2
  298. data/src/cxx_supportlib/ServerKit/HttpClient.h +2 -2
  299. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +103 -71
  300. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +6 -3
  301. data/src/cxx_supportlib/ServerKit/HttpRequest.h +4 -4
  302. data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +2 -2
  303. data/src/cxx_supportlib/ServerKit/HttpServer.h +20 -14
  304. data/src/cxx_supportlib/ServerKit/Implementation.cpp +2 -2
  305. data/src/cxx_supportlib/ServerKit/Server.h +2 -8
  306. data/src/cxx_supportlib/ServerKit/llerrors.h +84 -0
  307. data/src/cxx_supportlib/ServerKit/llhttp.c +10168 -0
  308. data/src/cxx_supportlib/ServerKit/llhttp.h +903 -0
  309. data/src/cxx_supportlib/ServerKit/llhttp_api.c +510 -0
  310. data/src/cxx_supportlib/ServerKit/llhttp_http.c +170 -0
  311. data/src/cxx_supportlib/ServerKit/llversion.h +12 -0
  312. data/src/cxx_supportlib/ServerKit/url_parser.c +574 -0
  313. data/src/cxx_supportlib/ServerKit/url_parser.h +74 -0
  314. data/src/cxx_supportlib/StaticString.h +7 -3
  315. data/src/cxx_supportlib/StrIntTools/DateParsing.h +3 -3
  316. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +14 -5
  317. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +7 -2
  318. data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +2 -2
  319. data/src/cxx_supportlib/StrIntTools/StringScanning.h +2 -2
  320. data/src/cxx_supportlib/StrIntTools/Template.h +2 -2
  321. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +59 -4
  322. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +3 -3
  323. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +4 -4
  324. data/src/cxx_supportlib/SystemTools/SystemTime.cpp +2 -2
  325. data/src/cxx_supportlib/SystemTools/SystemTime.h +2 -2
  326. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +16 -16
  327. data/src/cxx_supportlib/SystemTools/UserDatabase.h +8 -12
  328. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +13 -11
  329. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +4 -2
  330. data/src/cxx_supportlib/Utils/BlockingQueue.h +2 -2
  331. data/src/cxx_supportlib/Utils/CachedFileStat.cpp +2 -2
  332. data/src/cxx_supportlib/Utils/CachedFileStat.h +2 -2
  333. data/src/cxx_supportlib/Utils/CachedFileStat.hpp +2 -2
  334. data/src/cxx_supportlib/Utils/ClassUtils.h +2 -2
  335. data/src/cxx_supportlib/Utils/Curl.h +2 -2
  336. data/src/cxx_supportlib/Utils/FastStringStream.h +2 -2
  337. data/src/cxx_supportlib/Utils/FileChangeChecker.h +2 -2
  338. data/src/cxx_supportlib/Utils/HttpConstants.h +3 -3
  339. data/src/cxx_supportlib/Utils/IniFile.h +2 -2
  340. data/src/cxx_supportlib/Utils/MessagePassing.h +2 -2
  341. data/src/cxx_supportlib/Utils/OptionParsing.h +2 -2
  342. data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +2 -2
  343. data/src/cxx_supportlib/Utils/ScopeGuard.h +2 -2
  344. data/src/cxx_supportlib/Utils/SpeedMeter.h +2 -5
  345. data/src/cxx_supportlib/Utils/Timer.h +2 -2
  346. data/src/cxx_supportlib/Utils/VariantMap.h +2 -2
  347. data/src/cxx_supportlib/Utils.cpp +3 -3
  348. data/src/cxx_supportlib/Utils.h +2 -2
  349. data/src/cxx_supportlib/WatchdogLauncher.cpp +2 -2
  350. data/src/cxx_supportlib/WatchdogLauncher.h +3 -5
  351. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +22 -21
  352. data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +2 -2
  353. data/src/cxx_supportlib/WrapperRegistry/CBindings.h +2 -2
  354. data/src/cxx_supportlib/WrapperRegistry/Entry.h +2 -2
  355. data/src/cxx_supportlib/WrapperRegistry/Registry.h +2 -2
  356. data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
  357. data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
  358. data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
  359. data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
  360. data/src/cxx_supportlib/oxt/detail/spin_lock_darwin.hpp +1 -1
  361. data/src/cxx_supportlib/oxt/detail/spin_lock_gcc_x86.hpp +1 -1
  362. data/src/cxx_supportlib/oxt/detail/spin_lock_portable.hpp +1 -1
  363. data/src/cxx_supportlib/oxt/detail/spin_lock_pthreads.hpp +1 -1
  364. data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +1 -1
  365. data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +1 -1
  366. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +6 -2
  367. data/src/cxx_supportlib/oxt/implementation.cpp +13 -3
  368. data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
  369. data/src/cxx_supportlib/oxt/macros.hpp +1 -1
  370. data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
  371. data/src/cxx_supportlib/oxt/system_calls.cpp +22 -15
  372. data/src/cxx_supportlib/oxt/system_calls.hpp +1 -1
  373. data/src/cxx_supportlib/oxt/thread.hpp +3 -3
  374. data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
  375. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +2 -2
  376. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/compare.hpp +3 -3
  377. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +5 -2
  378. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +3 -1
  379. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format_all.hpp +2 -0
  380. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +11 -3
  381. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder.hpp +15 -15
  382. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter.hpp +1 -1
  383. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/trim.hpp +3 -3
  384. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_format.hpp +1 -2
  385. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_iterator.hpp +27 -1
  386. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +0 -4
  387. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +0 -1
  388. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/iter_find.hpp +8 -0
  389. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate.hpp +4 -3
  390. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/split.hpp +12 -0
  391. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +47 -0
  392. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +41 -0
  393. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +34 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +28 -0
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +338 -0
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +824 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +353 -0
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/append.hpp +67 -0
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +154 -0
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +115 -32
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +223 -0
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +119 -33
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +283 -0
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +37 -0
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +834 -107
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +144 -0
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +651 -329
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +206 -124
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +826 -0
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +4 -8
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +691 -0
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +657 -331
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +628 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +376 -171
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +413 -114
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +325 -68
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +427 -248
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +1239 -517
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +22 -121
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +16 -81
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +746 -0
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +494 -252
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +13 -15
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +3 -3
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +251 -132
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +624 -0
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +598 -0
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +615 -0
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +235 -182
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +618 -0
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +961 -370
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +320 -0
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +55 -39
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +61 -47
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +55 -39
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +4 -4
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +247 -0
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +237 -0
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +159 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/co_composed.hpp +1323 -0
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +525 -0
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +50 -1
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +130 -0
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +468 -181
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/connect_pipe.hpp +85 -0
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +77 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +7 -7
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +154 -43
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +721 -0
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +107 -0
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +2 -10
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +2 -4
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +24 -10
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +166 -0
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +4 -3
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +265 -370
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +109 -0
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +300 -7
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +2 -2
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +2 -23
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +12 -7
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_message.hpp +129 -0
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_payload.hpp +222 -0
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_payload_handler.hpp +81 -0
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +254 -0
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +9 -1
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +700 -722
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +40 -11
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -5
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +3 -23
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +74 -13
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +65 -7
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +76 -16
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +75 -16
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +36 -7
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +36 -7
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +3 -5
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +2 -2
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/exception.hpp +31 -0
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +154 -0
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +6 -6
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +3 -43
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +5 -10
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +32 -0
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +3 -5
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +31 -145
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +27 -1
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +24 -27
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +452 -36
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +605 -85
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +21 -1
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +28 -5
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +21 -1
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +47 -8
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +20 -14
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +47 -7
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_descriptor_service.ipp +207 -0
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_file_service.ipp +142 -0
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.hpp +114 -0
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.ipp +916 -0
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_socket_service_base.ipp +251 -0
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +21 -1
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +49 -7
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +11 -6
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +8 -4
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_serial_port_service.ipp +170 -0
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +23 -13
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +32 -20
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +39 -35
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +110 -6
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +25 -1
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +74 -7
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +2 -3
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +185 -28
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +828 -355
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +19 -10
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +209 -42
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +25 -1
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +8 -40
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +34 -9
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +37 -0
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +10 -6
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +17 -11
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_defer.hpp +209 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_dispatch.hpp +195 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_post.hpp +209 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +64 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +179 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +197 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_op.hpp +192 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_service.hpp +689 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +191 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_op.hpp +187 -0
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_file_service.hpp +263 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_null_buffers_op.hpp +116 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_operation.hpp +86 -0
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_service.hpp +321 -0
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_accept_op.hpp +282 -0
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_connect_op.hpp +142 -0
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recv_op.hpp +207 -0
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +208 -0
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +194 -0
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_send_op.hpp +193 -0
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_sendto_op.hpp +196 -0
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service.hpp +631 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service_base.hpp +665 -0
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_wait_op.hpp +114 -0
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +89 -32
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +37 -8
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +1 -6
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +83 -27
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +3 -5
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +45 -0
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +7 -1
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -5
  589. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +19 -4
  590. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  591. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +63 -52
  592. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  593. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  594. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  595. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  596. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  597. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  598. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +2 -2
  599. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +30 -8
  600. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +15 -2
  601. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  602. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  603. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  604. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_serial_port_service.hpp +251 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  606. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  607. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  608. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  609. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +60 -7
  610. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +237 -55
  611. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +49 -8
  612. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +139 -33
  613. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +59 -10
  614. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +81 -19
  615. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +81 -16
  616. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +65 -13
  617. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +86 -20
  618. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +81 -17
  619. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +198 -91
  620. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +319 -75
  621. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +49 -8
  622. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +29 -5
  623. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +8 -2
  624. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +45 -1
  625. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +26 -16
  626. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +4 -4
  627. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +35 -17
  628. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  629. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +35 -19
  630. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +24 -22
  631. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +37 -19
  632. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +36 -8
  633. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  634. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_task.hpp +51 -0
  635. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  636. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  637. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  638. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  639. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +59 -6
  640. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +2 -3
  641. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  642. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +11 -7
  643. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  644. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +5 -1
  645. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +90 -15
  646. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  647. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +71 -33
  648. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  649. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +2 -2
  650. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +12 -1
  651. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +47 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +3 -5
  653. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +13 -6
  654. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -6
  655. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -6
  656. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -6
  657. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -6
  658. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -6
  659. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +36 -5
  660. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +8 -6
  661. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  662. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +7 -9
  663. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +10 -1
  664. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +11 -1
  665. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +164 -25
  666. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +18 -9
  667. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +7 -3
  668. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
  669. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +33 -2
  670. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  671. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +6 -2
  672. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  673. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +3 -1
  674. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +3 -1
  675. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  676. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +132 -40
  677. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +85 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +13 -8
  679. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +6 -2
  680. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +2 -2
  681. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +85 -14
  682. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +33 -129
  683. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +136 -47
  684. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +30 -1
  685. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +280 -0
  686. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +1935 -0
  687. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +48 -0
  688. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1362 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1082 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +193 -0
  691. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +192 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +118 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +42 -0
  694. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +45 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1004 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +186 -0
  697. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +755 -0
  698. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +330 -0
  699. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +753 -0
  700. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +33 -0
  701. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +3 -26
  702. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +66 -44
  703. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +239 -47
  704. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +38 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +134 -0
  706. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +38 -0
  707. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +538 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +516 -0
  709. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +516 -0
  710. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +154 -0
  711. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel.hpp +72 -0
  712. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_error.hpp +88 -0
  713. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +303 -0
  714. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +35 -0
  715. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +138 -177
  716. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/concurrent_channel.hpp +72 -0
  717. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +295 -0
  718. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro_traits.hpp +230 -0
  719. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +38 -0
  720. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +363 -0
  721. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +128 -0
  722. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +202 -0
  723. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +149 -0
  724. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +681 -0
  725. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +171 -0
  726. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +142 -0
  727. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/has_signature.hpp +56 -0
  728. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +625 -0
  729. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +199 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +183 -0
  731. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/channel_error.ipp +63 -0
  732. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1224 -0
  733. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +790 -0
  734. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +257 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +216 -0
  736. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +68 -0
  737. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +457 -0
  738. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +38 -0
  739. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +226 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +191 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +113 -0
  742. data/src/cxx_supportlib/vendor-modified/boost/asio/file_base.hpp +168 -0
  743. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -6
  744. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
  745. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  746. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  747. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
  748. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
  749. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
  750. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  751. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -6
  752. data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
  753. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +128 -0
  754. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +136 -0
  755. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +171 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +278 -0
  757. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +1198 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +160 -185
  759. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +154 -181
  760. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
  761. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
  762. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancellation_signal.ipp +98 -0
  763. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +459 -0
  764. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +281 -438
  765. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.hpp +75 -0
  766. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.ipp +151 -0
  767. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +146 -0
  768. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +149 -0
  769. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +79 -0
  770. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +4 -4
  771. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +7 -37
  772. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  773. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +72 -141
  774. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +8 -3
  775. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +220 -132
  776. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +5 -3
  777. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +47 -0
  778. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +172 -0
  779. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +529 -342
  780. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +202 -280
  781. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +1840 -672
  782. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +289 -0
  783. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  784. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  785. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1183 -318
  786. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +15 -3
  787. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +2 -2
  788. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +26 -7
  789. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +115 -21
  790. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +198 -48
  791. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +74 -8
  792. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +303 -0
  793. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +186 -417
  794. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +446 -340
  795. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +171 -263
  796. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +699 -70
  797. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +87 -75
  798. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  799. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  800. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +52 -31
  801. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +124 -32
  802. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +13 -19
  803. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +16 -22
  804. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +114 -43
  805. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +13 -18
  806. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +15 -20
  807. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +19 -4
  808. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +46 -27
  809. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +337 -243
  810. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  811. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +4 -8
  812. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +17 -1
  813. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +12 -16
  814. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +21 -19
  815. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -14
  816. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +2 -2
  817. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  818. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
  819. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  820. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +23 -22
  821. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  822. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +11 -15
  823. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  824. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +28 -36
  825. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  826. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  827. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  828. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +6 -4
  829. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  830. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +6 -4
  831. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
  832. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +17 -21
  833. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +14 -18
  834. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  835. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  836. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +9 -9
  837. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
  838. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
  839. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +4 -4
  840. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +63 -0
  841. data/src/cxx_supportlib/vendor-modified/boost/asio/is_contiguous_iterator.hpp +47 -0
  842. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  843. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  844. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  845. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +10 -6
  846. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +14 -19
  847. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
  848. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +7 -1
  849. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +10 -8
  850. data/src/cxx_supportlib/vendor-modified/boost/asio/local/seq_packet_protocol.hpp +86 -0
  851. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
  852. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +54 -0
  853. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +4 -64
  854. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +35 -105
  855. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +273 -82
  856. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +283 -86
  857. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +5 -612
  858. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +2 -2
  859. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +3 -326
  860. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +149 -43
  861. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +581 -0
  862. data/src/cxx_supportlib/vendor-modified/boost/asio/prepend.hpp +68 -0
  863. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +315 -0
  864. data/src/cxx_supportlib/vendor-modified/boost/asio/random_access_file.hpp +37 -0
  865. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +777 -177
  866. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +231 -74
  867. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1849 -471
  868. data/src/cxx_supportlib/vendor-modified/boost/asio/readable_pipe.hpp +37 -0
  869. data/src/cxx_supportlib/vendor-modified/boost/asio/recycling_allocator.hpp +140 -0
  870. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +106 -0
  871. data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +346 -0
  872. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +437 -0
  873. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +347 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +3 -736
  875. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  876. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +3 -422
  877. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_base.hpp +173 -0
  878. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +26 -26
  879. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +640 -105
  880. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +7 -3
  881. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +38 -21
  882. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +7 -2
  883. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +10 -1
  884. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +7 -2
  885. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +65 -10
  886. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +9 -5
  887. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +75 -71
  888. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  889. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +5 -1
  890. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  891. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +7 -2
  892. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +17 -2
  893. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +89 -6
  894. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -2
  895. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +12 -3
  896. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +21 -7
  897. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +92 -0
  898. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  899. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +242 -79
  900. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +29 -5
  901. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +75 -0
  902. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +5 -1
  903. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +2 -1
  904. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -3
  905. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +423 -142
  906. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  907. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  908. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  909. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +2 -1
  910. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +33 -0
  911. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -6
  912. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +311 -40
  913. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_file.hpp +37 -0
  914. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  915. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +18 -6
  916. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +570 -28
  917. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -6
  918. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +269 -0
  919. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +773 -42
  920. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  921. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +102 -0
  922. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +106 -0
  923. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +106 -0
  924. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +106 -0
  925. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +106 -0
  926. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +106 -0
  927. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +103 -0
  928. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +106 -0
  929. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +106 -0
  930. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +106 -0
  931. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +106 -0
  932. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +104 -0
  933. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +117 -0
  934. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +118 -0
  935. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  936. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +2 -2
  937. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  938. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  939. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  940. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +82 -43
  941. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  942. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  943. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  944. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +163 -0
  945. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +21 -21
  946. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +3 -7
  947. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  948. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  949. data/src/cxx_supportlib/vendor-modified/boost/asio/writable_pipe.hpp +37 -0
  950. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +772 -173
  951. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +237 -73
  952. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  953. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +72 -28
  954. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +197 -0
  955. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +170 -11
  956. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +12 -3
  957. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +97 -0
  958. data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +2 -191
  959. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +8 -1
  960. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/aligned_variable.hpp +57 -0
  961. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +129 -0
  962. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +1265 -0
  963. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +1228 -0
  964. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +102 -12
  965. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +43 -11
  966. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/capabilities.hpp +217 -0
  967. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +53 -0
  968. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +65 -0
  969. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_alpha.hpp +34 -0
  970. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_arm.hpp +103 -0
  971. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_ppc.hpp +55 -0
  972. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_sparc.hpp +34 -0
  973. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_x86.hpp +74 -0
  974. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_msvc_arm.hpp +34 -0
  975. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_msvc_x86.hpp +61 -0
  976. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +100 -75
  977. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +0 -7
  978. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +50 -0
  979. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +90 -0
  980. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +57 -64
  981. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations.hpp +50 -0
  982. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations_fwd.hpp +38 -0
  983. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +1121 -0
  984. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +1909 -0
  985. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +867 -0
  986. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +1417 -0
  987. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +1218 -0
  988. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +215 -0
  989. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +1110 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +828 -0
  991. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +903 -0
  992. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations.hpp +49 -0
  993. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +194 -0
  994. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated_fwd.hpp +38 -0
  995. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_fwd.hpp +38 -0
  996. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +94 -0
  997. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +306 -0
  998. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +263 -0
  999. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +169 -0
  1000. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +72 -0
  1001. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +4 -1
  1002. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +22 -12
  1003. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +13 -10
  1004. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +4 -1
  1005. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +59 -40
  1006. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +1060 -0
  1007. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +1330 -0
  1008. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +363 -355
  1009. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +167 -163
  1010. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +232 -102
  1011. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +9 -17
  1012. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +6 -4
  1013. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +119 -92
  1014. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +41 -0
  1015. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +60 -0
  1016. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +58 -0
  1017. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +53 -0
  1018. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +90 -0
  1019. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +68 -0
  1020. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +70 -0
  1021. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +69 -0
  1022. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +66 -0
  1023. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +66 -0
  1024. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +41 -0
  1025. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +50 -0
  1026. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +75 -0
  1027. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +53 -0
  1028. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +64 -0
  1029. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +122 -35
  1030. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/footer.hpp +24 -0
  1031. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +4 -1
  1032. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +13 -8
  1033. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -3
  1034. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +185 -0
  1035. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +79 -0
  1036. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +66 -0
  1037. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_ppc_asm_common.hpp +33 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/header.hpp +72 -0
  1039. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +25 -1
  1040. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +108 -0
  1041. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -11
  1042. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +46 -0
  1043. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +151 -0
  1044. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +47 -0
  1045. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +43 -0
  1046. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch32_common.hpp +53 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch64_common.hpp +53 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +8 -79
  1049. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -1
  1050. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_common.hpp +7 -2
  1051. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +30 -5
  1052. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +80 -34
  1053. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +187 -0
  1054. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +51 -0
  1055. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +143 -0
  1056. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +42 -0
  1057. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -2
  1058. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +46 -0
  1059. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +45 -0
  1060. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +42 -0
  1061. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_capabilities.hpp +363 -0
  1062. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_darwin_ulock.hpp +58 -0
  1063. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_dragonfly_umtx.hpp +30 -0
  1064. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_freebsd_umtx.hpp +40 -0
  1065. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_futex.hpp +31 -0
  1066. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +64 -0
  1067. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations.hpp +28 -0
  1068. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations_fwd.hpp +43 -0
  1069. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +158 -0
  1070. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +75 -0
  1071. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +96 -0
  1072. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +119 -0
  1073. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +111 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +143 -0
  1075. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +7 -18
  1076. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +90 -0
  1077. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +40 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +97 -0
  1079. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +9 -0
  1080. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +4 -49
  1081. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +263 -1815
  1082. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_cc.hpp +117 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf2_cc.hpp +210 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf_cc.hpp +405 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/integer_sequence.hpp +111 -0
  1086. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +165 -0
  1087. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/tuple_for_each.hpp +64 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +143 -279
  1089. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +13 -14
  1090. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +24 -259
  1091. data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +33 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +4 -320
  1093. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +2 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +14 -14
  1095. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +34 -34
  1096. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +4 -4
  1097. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +34 -14
  1098. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +27 -27
  1099. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +4 -4
  1100. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/is_evenly_divisible_by.hpp +1 -7
  1101. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/requires_cxx11.hpp +23 -0
  1102. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
  1103. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +5 -4
  1104. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +10 -6
  1105. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +1 -1
  1106. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +4 -4
  1107. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
  1108. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_style.hpp +1 -1
  1109. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +3 -2
  1110. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +4 -4
  1111. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/timezone.hpp +2 -1
  1112. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
  1113. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +3 -3
  1114. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +3 -2
  1115. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
  1116. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +178 -167
  1117. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +39 -47
  1118. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +32 -38
  1119. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +12 -9
  1120. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +2 -2
  1121. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +24 -3
  1122. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/has_constraints.hpp +3 -3
  1123. data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +8 -1
  1124. data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +20 -20
  1125. data/src/cxx_supportlib/vendor-modified/boost/config/abi_prefix.hpp +1 -1
  1126. data/src/cxx_supportlib/vendor-modified/boost/config/abi_suffix.hpp +1 -3
  1127. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +211 -0
  1128. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +212 -0
  1129. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +47 -0
  1130. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +65 -0
  1131. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +59 -0
  1132. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +41 -0
  1133. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx98.hpp +23 -0
  1134. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +78 -19
  1135. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +13 -3
  1136. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +38 -4
  1137. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +89 -0
  1138. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +164 -10
  1139. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
  1140. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +40 -11
  1141. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +374 -52
  1142. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +10 -1
  1143. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +41 -11
  1144. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +9 -2
  1145. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
  1146. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +7 -1
  1147. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +14 -1
  1148. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
  1149. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +10 -1
  1150. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +10 -1
  1151. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +9 -3
  1152. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +9 -0
  1153. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +15 -0
  1154. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +10 -1
  1155. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +54 -10
  1156. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +22 -0
  1157. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +5 -0
  1158. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +218 -0
  1159. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -2
  1160. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_platform_config.hpp +5 -0
  1161. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_stdlib_config.hpp +13 -2
  1162. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +303 -5
  1163. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
  1164. data/src/cxx_supportlib/vendor-modified/boost/config/platform/bsd.hpp +5 -8
  1165. data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +63 -74
  1166. data/src/cxx_supportlib/vendor-modified/boost/config/platform/wasm.hpp +23 -0
  1167. data/src/cxx_supportlib/vendor-modified/boost/config/requires_threads.hpp +1 -1
  1168. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +76 -10
  1169. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +1 -0
  1170. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +51 -4
  1171. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +144 -11
  1172. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +1 -0
  1173. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +1 -0
  1174. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -1
  1175. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +1 -0
  1176. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +6 -5
  1177. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +1 -0
  1178. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +1 -0
  1179. data/src/cxx_supportlib/vendor-modified/boost/config/user.hpp +2 -2
  1180. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +26 -0
  1181. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +291 -18
  1182. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +43 -35
  1183. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +205 -41
  1184. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +132 -38
  1185. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +981 -361
  1186. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +25 -22
  1187. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +838 -463
  1188. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -10
  1189. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +199 -133
  1190. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +28 -0
  1191. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +4 -4
  1192. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
  1193. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +16 -16
  1194. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +4 -3
  1195. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +4 -3
  1196. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +73 -13
  1197. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +11 -3
  1198. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
  1199. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +52 -16
  1200. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +4 -0
  1201. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +21 -116
  1202. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +991 -148
  1203. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +181 -57
  1204. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +68 -68
  1205. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +443 -239
  1206. data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
  1207. data/src/cxx_supportlib/vendor-modified/boost/container/detail/guards_dended.hpp +198 -0
  1208. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +18 -1
  1209. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +36 -1
  1210. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +91 -0
  1211. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +24 -0
  1212. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +228 -194
  1213. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +55 -2
  1214. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +60 -2
  1215. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +135 -40
  1216. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +48 -23
  1217. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +28 -9
  1218. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +352 -152
  1219. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +3 -3
  1220. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +12 -12
  1221. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +152 -105
  1222. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +1 -7
  1223. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
  1224. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +3 -3
  1225. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +7 -11
  1226. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +6 -0
  1227. data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +181 -0
  1228. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
  1229. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +464 -351
  1230. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +5 -0
  1231. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +9 -13
  1232. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +3 -3
  1233. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +1 -1
  1234. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +6 -15
  1235. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +138 -4
  1236. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +3041 -0
  1237. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +874 -314
  1238. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +391 -126
  1239. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +150 -120
  1240. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +634 -254
  1241. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +33 -13
  1242. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +30 -24
  1243. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +35 -22
  1244. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +433 -7
  1245. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +51 -0
  1246. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +3 -3
  1247. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +1 -4
  1248. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +37 -3
  1249. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +10 -7
  1250. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +9 -9
  1251. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +92 -8
  1252. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +7 -6
  1253. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +4 -4
  1254. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +79 -81
  1255. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +445 -180
  1256. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +142 -113
  1257. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +325 -263
  1258. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +386 -228
  1259. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +243 -161
  1260. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +601 -455
  1261. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +155 -41
  1262. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
  1263. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +977 -1017
  1264. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_integral.hpp +146 -0
  1265. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
  1266. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +408 -0
  1267. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple_like.hpp +62 -0
  1268. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/mulx.hpp +79 -0
  1269. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +395 -580
  1270. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +25 -24
  1271. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +98 -0
  1272. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +37 -0
  1273. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +41 -0
  1274. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_tuple_like.hpp +36 -0
  1275. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +38 -0
  1276. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +2 -2
  1277. data/src/cxx_supportlib/vendor-modified/boost/core/alignof.hpp +57 -0
  1278. data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +95 -0
  1279. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +834 -0
  1280. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_traits.hpp +112 -0
  1281. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +954 -0
  1282. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +35 -7
  1283. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +298 -0
  1284. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +46 -0
  1285. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +158 -0
  1286. data/src/cxx_supportlib/vendor-modified/boost/core/detail/is_same.hpp +39 -0
  1287. data/src/cxx_supportlib/vendor-modified/boost/core/detail/lwt_unattended.hpp +66 -0
  1288. data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
  1289. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_pause.hpp +71 -0
  1290. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +122 -0
  1291. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_yield.hpp +100 -0
  1292. data/src/cxx_supportlib/vendor-modified/boost/core/detail/splitmix64.hpp +54 -0
  1293. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +1272 -0
  1294. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +203 -0
  1295. data/src/cxx_supportlib/vendor-modified/boost/core/exchange.hpp +49 -0
  1296. data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +9 -0
  1297. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +53 -0
  1298. data/src/cxx_supportlib/vendor-modified/boost/core/first_scalar.hpp +45 -0
  1299. data/src/cxx_supportlib/vendor-modified/boost/core/functor.hpp +41 -0
  1300. data/src/cxx_supportlib/vendor-modified/boost/core/identity.hpp +61 -0
  1301. data/src/cxx_supportlib/vendor-modified/boost/core/ignore_unused.hpp +32 -2
  1302. data/src/cxx_supportlib/vendor-modified/boost/core/invoke_swap.hpp +93 -0
  1303. data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +10 -15
  1304. data/src/cxx_supportlib/vendor-modified/boost/core/launder.hpp +69 -0
  1305. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +269 -145
  1306. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +43 -8
  1307. data/src/cxx_supportlib/vendor-modified/boost/core/make_span.hpp +59 -0
  1308. data/src/cxx_supportlib/vendor-modified/boost/core/max_align.hpp +82 -0
  1309. data/src/cxx_supportlib/vendor-modified/boost/core/memory_resource.hpp +108 -0
  1310. data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +14 -2
  1311. data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +90 -0
  1312. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +16 -1
  1313. data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +7 -0
  1314. data/src/cxx_supportlib/vendor-modified/boost/core/nvp.hpp +57 -0
  1315. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
  1316. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +112 -60
  1317. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +59 -0
  1318. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +61 -17
  1319. data/src/cxx_supportlib/vendor-modified/boost/core/serialization.hpp +131 -0
  1320. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +31 -0
  1321. data/src/cxx_supportlib/vendor-modified/boost/core/snprintf.hpp +173 -0
  1322. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +401 -0
  1323. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +12 -32
  1324. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +1186 -0
  1325. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +26 -10
  1326. data/src/cxx_supportlib/vendor-modified/boost/core/uncaught_exceptions.hpp +155 -0
  1327. data/src/cxx_supportlib/vendor-modified/boost/core/use_default.hpp +17 -0
  1328. data/src/cxx_supportlib/vendor-modified/boost/core/verbose_terminate_handler.hpp +88 -0
  1329. data/src/cxx_supportlib/vendor-modified/boost/core/yield_primitives.hpp +12 -0
  1330. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +4 -0
  1331. data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +5 -5
  1332. data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +3 -3
  1333. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +9 -4
  1334. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +9 -41
  1335. data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +19 -11
  1336. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +24 -24
  1337. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +17 -22
  1338. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +44 -49
  1339. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +5 -6
  1340. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generators.hpp +24 -19
  1341. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_iterator.hpp +8 -8
  1342. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_parsing.hpp +51 -25
  1343. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +56 -56
  1344. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_transition_generators.hpp +2 -2
  1345. data/src/cxx_supportlib/vendor-modified/boost/date_time/find_match.hpp +42 -0
  1346. data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +98 -98
  1347. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
  1348. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
  1349. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +34 -27
  1350. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -4
  1351. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +44 -32
  1352. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +2 -2
  1353. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +51 -23
  1354. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +29 -27
  1355. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +43 -9
  1356. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +3 -3
  1357. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +34 -15
  1358. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +15 -17
  1359. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +30 -25
  1360. data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +57 -37
  1361. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
  1362. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
  1363. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_io.hpp +3 -0
  1364. data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -3
  1365. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +44 -47
  1366. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +34 -31
  1367. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_parser.hpp +27 -28
  1368. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +1 -1
  1369. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +8 -8
  1370. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +13 -26
  1371. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +7 -7
  1372. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +1 -1
  1373. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +22 -4
  1374. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
  1375. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
  1376. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +4 -0
  1377. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +28 -12
  1378. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_formatter.hpp +1 -0
  1379. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -6
  1380. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +5 -3
  1381. data/src/cxx_supportlib/vendor-modified/boost/date_time/strings_from_facet.hpp +4 -2
  1382. data/src/cxx_supportlib/vendor-modified/boost/date_time/time.hpp +24 -3
  1383. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +56 -44
  1384. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +9 -12
  1385. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_iterator.hpp +8 -8
  1386. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +5 -10
  1387. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +18 -18
  1388. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_counted.hpp +65 -50
  1389. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +43 -30
  1390. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +1 -1
  1391. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_names.hpp +1 -1
  1392. data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +0 -1
  1393. data/src/cxx_supportlib/vendor-modified/boost/date_time/wrapping_int.hpp +16 -15
  1394. data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +7 -5
  1395. data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
  1396. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
  1397. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
  1398. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
  1399. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +161 -0
  1400. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
  1401. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +7 -11
  1402. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +38 -47
  1403. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +6 -97
  1404. data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +7 -7
  1405. data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +3 -3
  1406. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +10 -4
  1407. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +10 -4
  1408. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +12 -7
  1409. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +135 -34
  1410. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +9 -4
  1411. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +9 -4
  1412. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +24 -0
  1413. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +2 -2
  1414. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +11 -5
  1415. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +18 -9
  1416. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +118 -70
  1417. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +9 -4
  1418. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +12 -10
  1419. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +10 -5
  1420. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +9 -4
  1421. data/src/cxx_supportlib/vendor-modified/boost/exception_ptr.hpp +2 -2
  1422. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +16 -9
  1423. data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +1 -3
  1424. data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +1 -3
  1425. data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +1 -3
  1426. data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +1 -3
  1427. data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +1 -3
  1428. data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +1 -3
  1429. data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +1 -3
  1430. data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +1 -3
  1431. data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +1 -3
  1432. data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +1 -3
  1433. data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +1 -3
  1434. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +77 -237
  1435. data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +36 -41
  1436. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +456 -464
  1437. data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +1 -31
  1438. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +5 -61
  1439. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor.hpp +2 -2
  1440. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +3 -3
  1441. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +35 -33
  1442. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +83 -0
  1443. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +86 -81
  1444. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +2 -2
  1445. data/src/cxx_supportlib/vendor-modified/boost/integer/mod_inverse.hpp +53 -0
  1446. data/src/cxx_supportlib/vendor-modified/boost/integer/static_log2.hpp +4 -5
  1447. data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +3 -2
  1448. data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +4 -4
  1449. data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +2 -2
  1450. data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +3 -3
  1451. data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +4 -4
  1452. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +99 -100
  1453. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +51 -52
  1454. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +83 -83
  1455. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +101 -102
  1456. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +155 -164
  1457. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +164 -158
  1458. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +36 -28
  1459. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +88 -19
  1460. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +5 -5
  1461. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
  1462. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +44 -44
  1463. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +10 -8
  1464. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +23 -23
  1465. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +38 -40
  1466. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +85 -16
  1467. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +1 -0
  1468. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +3 -3
  1469. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +27 -27
  1470. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/empty_node_checker.hpp +1 -1
  1471. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +1 -1
  1472. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +1 -32
  1473. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +14 -15
  1474. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +277 -0
  1475. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +54 -0
  1476. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_integral.hpp +119 -0
  1477. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_mix.hpp +130 -0
  1478. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +204 -115
  1479. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +26 -22
  1480. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +6 -6
  1481. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +126 -80
  1482. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +7 -7
  1483. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +30 -18
  1484. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +6 -6
  1485. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +11 -64
  1486. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +8 -1
  1487. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +4 -4
  1488. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
  1489. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +6 -17
  1490. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +24 -24
  1491. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +3 -140
  1492. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +3 -1
  1493. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +14 -14
  1494. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +36 -17
  1495. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +3 -3
  1496. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +22 -22
  1497. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +38 -26
  1498. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +9 -9
  1499. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +45 -26
  1500. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/twin.hpp +49 -0
  1501. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/value_functors.hpp +52 -0
  1502. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +66 -4
  1503. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +1763 -1039
  1504. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +5 -0
  1505. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +98 -18
  1506. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +113 -111
  1507. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +10 -10
  1508. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +4 -4
  1509. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +26 -4
  1510. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +21 -11
  1511. data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +2 -2
  1512. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +7 -4
  1513. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +31 -23
  1514. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +13 -6
  1515. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +51 -52
  1516. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +74 -74
  1517. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +101 -102
  1518. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +12 -12
  1519. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +109 -110
  1520. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +68 -77
  1521. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +81 -81
  1522. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +178 -186
  1523. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +8 -6
  1524. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +107 -108
  1525. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +54 -55
  1526. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +99 -97
  1527. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +141 -115
  1528. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +88 -83
  1529. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +158 -152
  1530. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +6 -4
  1531. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +128 -114
  1532. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +17 -17
  1533. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +361 -315
  1534. data/src/cxx_supportlib/vendor-modified/boost/io_fwd.hpp +45 -49
  1535. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +12 -1
  1536. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +10 -10
  1537. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -1
  1538. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +5 -5
  1539. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +13 -13
  1540. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +65 -0
  1541. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +148 -0
  1542. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +3 -3
  1543. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +2 -2
  1544. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +107 -26
  1545. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +8 -4
  1546. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +24 -25
  1547. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +59 -0
  1548. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +154 -172
  1549. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +619 -647
  1550. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +89 -77
  1551. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +35 -45
  1552. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +23 -29
  1553. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +73 -0
  1554. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +2 -2
  1555. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +33 -28
  1556. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +10 -9
  1557. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +23 -157
  1558. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +10 -13
  1559. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +4 -2
  1560. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +3 -1
  1561. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +3 -1
  1562. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +4 -2
  1563. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +20 -25
  1564. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +13 -122
  1565. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +8 -2
  1566. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +24 -22
  1567. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +16 -5
  1568. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +1 -1
  1569. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +0 -1
  1570. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +4 -3
  1571. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +50 -29
  1572. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/tss_null.cpp +2 -2
  1573. data/src/cxx_supportlib/vendor-modified/boost/limits.hpp +12 -12
  1574. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +6 -12
  1575. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +5 -5
  1576. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +107 -62
  1577. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +119 -86
  1578. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +322 -489
  1579. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +11 -10
  1580. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +22 -11
  1581. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +9 -0
  1582. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +463 -120
  1583. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +87 -10
  1584. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +16 -5
  1585. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/search.hpp +79 -0
  1586. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +9 -3
  1587. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +8 -5
  1588. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +24 -9
  1589. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +0 -1
  1590. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +32 -11
  1591. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +32 -6
  1592. data/src/cxx_supportlib/vendor-modified/boost/move/detail/addressof.hpp +61 -0
  1593. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +1 -1
  1594. data/src/cxx_supportlib/vendor-modified/boost/move/detail/force_ptr.hpp +36 -0
  1595. data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +12 -0
  1596. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +109 -9
  1597. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
  1598. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +10 -32
  1599. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +11 -6
  1600. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  1601. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +268 -0
  1602. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +40 -33
  1603. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +5 -1
  1604. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_end.hpp +2 -0
  1605. data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +1 -1
  1606. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +341 -70
  1607. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -27
  1608. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +90 -3
  1609. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +21 -21
  1610. data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +10 -0
  1611. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +65 -66
  1612. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +2 -2
  1613. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +38 -33
  1614. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +1386 -0
  1615. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +120 -0
  1616. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/config.hpp +149 -0
  1617. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_append.hpp +321 -0
  1618. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +48 -0
  1619. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_count.hpp +147 -0
  1620. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_defer.hpp +119 -0
  1621. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +166 -0
  1622. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_front.hpp +50 -0
  1623. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_list.hpp +39 -0
  1624. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_value_list.hpp +41 -0
  1625. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list.hpp +24 -0
  1626. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list_v.hpp +27 -0
  1627. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +87 -0
  1628. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_min_element.hpp +51 -0
  1629. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_plus.hpp +84 -0
  1630. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +48 -0
  1631. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_rename.hpp +54 -0
  1632. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_value.hpp +25 -0
  1633. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_void.hpp +32 -0
  1634. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_with_index.hpp +385 -0
  1635. data/src/cxx_supportlib/vendor-modified/boost/mp11/function.hpp +222 -0
  1636. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +121 -0
  1637. data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +51 -0
  1638. data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +481 -0
  1639. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +188 -0
  1640. data/src/cxx_supportlib/vendor-modified/boost/mp11/utility.hpp +169 -0
  1641. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +16 -0
  1642. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +1 -1
  1643. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +31 -11
  1644. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/common_name_wknd.hpp +2 -2
  1645. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/adl.hpp +1 -1
  1646. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/arrays.hpp +1 -1
  1647. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bcc.hpp +2 -2
  1648. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bind.hpp +1 -1
  1649. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/compiler.hpp +2 -2
  1650. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ctps.hpp +1 -1
  1651. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dtp.hpp +3 -3
  1652. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/forwarding.hpp +1 -1
  1653. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/integral.hpp +1 -1
  1654. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/operators.hpp +1 -1
  1655. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
  1656. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/preprocessor.hpp +1 -1
  1657. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ttp.hpp +2 -2
  1658. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_impl.hpp +1 -1
  1659. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl_body.hpp +3 -3
  1660. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_rebind.hpp +4 -4
  1661. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +3 -2
  1662. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_support.hpp +3 -3
  1663. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
  1664. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +1 -1
  1665. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/enum.hpp +12 -0
  1666. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/params.hpp +12 -0
  1667. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/size_impl.hpp +1 -1
  1668. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/static_cast.hpp +1 -1
  1669. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity.hpp +1 -1
  1670. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/yes_no.hpp +2 -1
  1671. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +1 -1
  1672. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +1 -1
  1673. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +4 -4
  1674. data/src/cxx_supportlib/vendor-modified/boost/mpl/if.hpp +1 -1
  1675. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c.hpp +1 -1
  1676. data/src/cxx_supportlib/vendor-modified/boost/mpl/lower_bound.hpp +1 -1
  1677. data/src/cxx_supportlib/vendor-modified/boost/mpl/numeric_cast.hpp +1 -1
  1678. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +1 -1
  1679. data/src/cxx_supportlib/vendor-modified/boost/mpl/string.hpp +6 -6
  1680. data/src/cxx_supportlib/vendor-modified/boost/mpl/upper_bound.hpp +1 -1
  1681. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/at.hpp +1 -1
  1682. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +3 -44
  1683. data/src/cxx_supportlib/vendor-modified/boost/nondet_random.hpp +22 -0
  1684. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +5 -5
  1685. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +11 -1
  1686. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/cast.hpp +1 -1
  1687. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/converter_policies.hpp +5 -5
  1688. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/converter.hpp +1 -1
  1689. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
  1690. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/meta.hpp +1 -1
  1691. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
  1692. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
  1693. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +33 -24
  1694. data/src/cxx_supportlib/vendor-modified/boost/optional/bad_optional_access.hpp +9 -0
  1695. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +9 -3
  1696. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +17 -17
  1697. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +1 -1
  1698. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +4 -4
  1699. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +49 -0
  1700. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +30 -4
  1701. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
  1702. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +6 -6
  1703. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +41 -30
  1704. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +304 -128
  1705. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +3 -2
  1706. data/src/cxx_supportlib/vendor-modified/boost/parameter/are_tagged_arguments.hpp +125 -0
  1707. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/always_true_predicate.hpp +42 -0
  1708. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1253 -359
  1709. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/as_lvalue.hpp +25 -0
  1710. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/augment_predicate.hpp +198 -0
  1711. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/cast.hpp +7 -136
  1712. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/default.hpp +101 -59
  1713. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/has_nested_template_fn.hpp +111 -0
  1714. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_maybe.hpp +42 -16
  1715. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_placeholder.hpp +64 -0
  1716. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_tagged_argument.hpp +95 -0
  1717. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/lambda_tag.hpp +16 -0
  1718. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/maybe.hpp +128 -97
  1719. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/name.hpp +93 -0
  1720. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/as_parameter_requirements.hpp +32 -0
  1721. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduce_tag.hpp +217 -0
  1722. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduced_item.hpp +34 -0
  1723. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/insert_tagged.hpp +23 -0
  1724. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/is_named_argument.hpp +43 -0
  1725. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/item.hpp +47 -0
  1726. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_arg_list.hpp +438 -0
  1727. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_deduced_items.hpp +53 -0
  1728. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_items.hpp +45 -0
  1729. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_parameter_spec_items.hpp +244 -0
  1730. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/parameter_requirements.hpp +25 -0
  1731. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/predicate.hpp +87 -0
  1732. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/satisfies.hpp +142 -0
  1733. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_deduced.hpp +59 -0
  1734. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg.hpp +30 -0
  1735. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +67 -0
  1736. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_template_keyword_arg.hpp +30 -0
  1737. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_type.hpp +89 -0
  1738. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +41 -0
  1739. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parameter_requirements.hpp +7 -20
  1740. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parenthesized_type.hpp +8 -31
  1741. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/argument_pack.hpp +91 -0
  1742. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/match.hpp +55 -0
  1743. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp +97 -0
  1744. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp +1638 -0
  1745. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp +1796 -0
  1746. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp +65 -0
  1747. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp +57 -0
  1748. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/flatten.hpp +7 -110
  1749. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each.hpp +7 -98
  1750. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each_pred.hpp +1029 -0
  1751. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/argument_specs.hpp +24 -0
  1752. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/arity_range.hpp +42 -0
  1753. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/flatten.hpp +143 -0
  1754. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/for_each.hpp +152 -0
  1755. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp +509 -0
  1756. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_cast.hpp +730 -0
  1757. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp +474 -0
  1758. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp +33 -0
  1759. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp +43 -0
  1760. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_name.hpp +152 -0
  1761. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp +331 -0
  1762. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp +122 -0
  1763. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp +34 -0
  1764. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/specification.hpp +109 -0
  1765. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/split_args.hpp +71 -0
  1766. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp +78 -0
  1767. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_binary.hpp +31 -0
  1768. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_nullary.hpp +32 -0
  1769. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp +165 -0
  1770. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp +24 -0
  1771. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/nullptr.hpp +18 -0
  1772. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +92 -0
  1773. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/qualifier.hpp +88 -0
  1774. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_enum.hpp +26 -0
  1775. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_merge.hpp +1807 -0
  1776. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/result_of0.hpp +46 -29
  1777. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +94 -42
  1778. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +156 -34
  1779. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +874 -159
  1780. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument_fwd.hpp +38 -0
  1781. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/template_keyword.hpp +76 -34
  1782. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +161 -78
  1783. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default.hpp +17 -0
  1784. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default_tag.hpp +29 -0
  1785. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +26 -17
  1786. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/yesno.hpp +30 -14
  1787. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +158 -74
  1788. data/src/cxx_supportlib/vendor-modified/boost/parameter/compose.hpp +210 -0
  1789. data/src/cxx_supportlib/vendor-modified/boost/parameter/config.hpp +75 -6
  1790. data/src/cxx_supportlib/vendor-modified/boost/parameter/deduced.hpp +132 -0
  1791. data/src/cxx_supportlib/vendor-modified/boost/parameter/is_argument_pack.hpp +29 -0
  1792. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword.hpp +724 -102
  1793. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword_fwd.hpp +23 -0
  1794. data/src/cxx_supportlib/vendor-modified/boost/parameter/macros.hpp +205 -72
  1795. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +37 -44
  1796. data/src/cxx_supportlib/vendor-modified/boost/parameter/name.hpp +100 -126
  1797. data/src/cxx_supportlib/vendor-modified/boost/parameter/nested_keyword.hpp +111 -0
  1798. data/src/cxx_supportlib/vendor-modified/boost/parameter/optional.hpp +67 -0
  1799. data/src/cxx_supportlib/vendor-modified/boost/parameter/parameters.hpp +556 -887
  1800. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor.hpp +156 -1016
  1801. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor_no_spec.hpp +74 -0
  1802. data/src/cxx_supportlib/vendor-modified/boost/parameter/python.hpp +5 -6
  1803. data/src/cxx_supportlib/vendor-modified/boost/parameter/required.hpp +66 -0
  1804. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +87 -0
  1805. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +156 -74
  1806. data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +119 -25
  1807. data/src/cxx_supportlib/vendor-modified/boost/pool/object_pool.hpp +2 -2
  1808. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +22 -9
  1809. data/src/cxx_supportlib/vendor-modified/boost/pool/pool_alloc.hpp +1 -1
  1810. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +13 -0
  1811. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +19 -13
  1812. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +97 -28
  1813. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +16 -10
  1814. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +19 -13
  1815. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/e2k.h +54 -0
  1816. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +19 -13
  1817. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/loongarch.h +41 -0
  1818. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +33 -27
  1819. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +31 -20
  1820. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +24 -18
  1821. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +82 -30
  1822. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +50 -0
  1823. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +13 -7
  1824. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/riscv.h +48 -0
  1825. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +23 -12
  1826. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +26 -13
  1827. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +29 -15
  1828. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +15 -9
  1829. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +15 -9
  1830. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +31 -25
  1831. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +19 -13
  1832. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86.h +4 -4
  1833. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +14 -8
  1834. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +4 -1
  1835. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/borland.h +12 -11
  1836. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/clang.h +10 -9
  1837. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/comeau.h +10 -9
  1838. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +13 -12
  1839. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/diab.h +10 -9
  1840. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/digitalmars.h +10 -9
  1841. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/dignus.h +10 -9
  1842. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/edg.h +10 -9
  1843. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ekopath.h +10 -9
  1844. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc.h +11 -10
  1845. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc_xml.h +9 -8
  1846. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/greenhills.h +12 -11
  1847. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/hp_acc.h +10 -9
  1848. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/iar.h +10 -9
  1849. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ibm.h +15 -14
  1850. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +18 -17
  1851. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/kai.h +10 -9
  1852. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/llvm.h +9 -8
  1853. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metaware.h +9 -8
  1854. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metrowerks.h +14 -13
  1855. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/microtec.h +9 -8
  1856. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/mpw.h +12 -11
  1857. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +74 -0
  1858. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/palm.h +10 -9
  1859. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/pgi.h +10 -9
  1860. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sgi_mipspro.h +12 -11
  1861. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sunpro.h +14 -13
  1862. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/tendra.h +9 -8
  1863. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +13 -12
  1864. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/watcom.h +10 -9
  1865. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +1 -0
  1866. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm/versions.h +16 -10
  1867. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +21 -19
  1868. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc/versions.h +27 -21
  1869. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc.h +21 -19
  1870. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86/versions.h +73 -67
  1871. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +39 -37
  1872. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +24 -19
  1873. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +25 -23
  1874. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +95 -46
  1875. data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +53 -0
  1876. data/src/cxx_supportlib/vendor-modified/boost/predef/language/objc.h +9 -8
  1877. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +11 -10
  1878. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +41 -34
  1879. data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +1 -0
  1880. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +10 -9
  1881. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/gnu.h +12 -11
  1882. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/uc.h +10 -9
  1883. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/vms.h +9 -8
  1884. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/zos.h +10 -9
  1885. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +11 -10
  1886. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/dinkumware.h +11 -10
  1887. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/libcomo.h +10 -9
  1888. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/modena.h +10 -9
  1889. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msl.h +12 -11
  1890. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msvc.h +53 -0
  1891. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/roguewave.h +11 -10
  1892. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/sgi.h +10 -9
  1893. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +12 -11
  1894. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stlport.h +13 -12
  1895. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/vacpp.h +9 -8
  1896. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +1 -0
  1897. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +107 -33
  1898. data/src/cxx_supportlib/vendor-modified/boost/predef/os/aix.h +14 -13
  1899. data/src/cxx_supportlib/vendor-modified/boost/predef/os/amigaos.h +10 -9
  1900. data/src/cxx_supportlib/vendor-modified/boost/predef/os/beos.h +9 -8
  1901. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +10 -8
  1902. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +10 -8
  1903. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +11 -9
  1904. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +17 -15
  1905. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +60 -58
  1906. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd.h +22 -23
  1907. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +15 -9
  1908. data/src/cxx_supportlib/vendor-modified/boost/predef/os/haiku.h +9 -8
  1909. data/src/cxx_supportlib/vendor-modified/boost/predef/os/hpux.h +11 -10
  1910. data/src/cxx_supportlib/vendor-modified/boost/predef/os/ios.h +12 -11
  1911. data/src/cxx_supportlib/vendor-modified/boost/predef/os/irix.h +10 -9
  1912. data/src/cxx_supportlib/vendor-modified/boost/predef/os/linux.h +14 -10
  1913. data/src/cxx_supportlib/vendor-modified/boost/predef/os/macos.h +14 -13
  1914. data/src/cxx_supportlib/vendor-modified/boost/predef/os/os400.h +9 -8
  1915. data/src/cxx_supportlib/vendor-modified/boost/predef/os/qnxnto.h +12 -11
  1916. data/src/cxx_supportlib/vendor-modified/boost/predef/os/solaris.h +10 -9
  1917. data/src/cxx_supportlib/vendor-modified/boost/predef/os/unix.h +24 -22
  1918. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +11 -10
  1919. data/src/cxx_supportlib/vendor-modified/boost/predef/os/windows.h +16 -15
  1920. data/src/cxx_supportlib/vendor-modified/boost/predef/os.h +0 -1
  1921. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +19 -21
  1922. data/src/cxx_supportlib/vendor-modified/boost/predef/other/wordsize.h +73 -0
  1923. data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +22 -14
  1924. data/src/cxx_supportlib/vendor-modified/boost/predef/other.h +3 -2
  1925. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/android.h +44 -0
  1926. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +9 -8
  1927. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +14 -9
  1928. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +12 -11
  1929. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +10 -9
  1930. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +10 -9
  1931. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +10 -9
  1932. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +9 -8
  1933. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +10 -9
  1934. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +9 -8
  1935. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +10 -9
  1936. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +9 -8
  1937. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +12 -11
  1938. data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +1 -1
  1939. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  1940. data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +16 -14
  1941. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/add.hpp +54 -1
  1942. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/dec.hpp +33 -0
  1943. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/is_1_number.hpp +21 -0
  1944. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/is_maximum_number.hpp +22 -0
  1945. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/is_minimum_number.hpp +21 -0
  1946. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/maximum_number.hpp +19 -0
  1947. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/div.hpp +37 -1
  1948. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/inc.hpp +33 -0
  1949. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/dec_1024.hpp +531 -0
  1950. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/dec_256.hpp +276 -0
  1951. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/dec_512.hpp +275 -0
  1952. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/inc_1024.hpp +536 -0
  1953. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/inc_256.hpp +275 -0
  1954. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/inc_512.hpp +280 -0
  1955. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/mod.hpp +37 -1
  1956. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/mul.hpp +60 -1
  1957. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/sub.hpp +51 -1
  1958. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +21 -21
  1959. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/enum.hpp +17 -1
  1960. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/insert.hpp +71 -0
  1961. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/remove.hpp +66 -0
  1962. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/replace.hpp +58 -0
  1963. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_list.hpp +7 -7
  1964. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_seq.hpp +7 -7
  1965. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_tuple.hpp +7 -7
  1966. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/limits/not_equal_1024.hpp +1044 -0
  1967. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/limits/not_equal_256.hpp +793 -0
  1968. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/limits/not_equal_512.hpp +532 -0
  1969. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/not_equal.hpp +44 -1
  1970. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +26 -34
  1971. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/limits.hpp +136 -3
  1972. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/deduce_d.hpp +27 -0
  1973. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/dmc/while.hpp +2 -3
  1974. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/limits/while_1024.hpp +1044 -0
  1975. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/limits/while_256.hpp +533 -0
  1976. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/limits/while_512.hpp +532 -0
  1977. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/while.hpp +27 -0
  1978. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/limits/while_1024.hpp +1044 -0
  1979. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/limits/while_256.hpp +533 -0
  1980. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/limits/while_512.hpp +532 -0
  1981. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/while.hpp +27 -0
  1982. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/limits/while_1024.hpp +531 -0
  1983. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/limits/while_256.hpp +275 -0
  1984. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/limits/while_512.hpp +275 -0
  1985. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/while.hpp +75 -0
  1986. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/auto_rec.hpp +41 -0
  1987. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/dmc/auto_rec.hpp +2 -2
  1988. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/limits/auto_rec_1024.hpp +532 -0
  1989. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/limits/auto_rec_256.hpp +280 -0
  1990. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/limits/auto_rec_512.hpp +276 -0
  1991. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/check_empty.hpp +19 -0
  1992. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/detail/is_empty.hpp +3 -3
  1993. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/intercept.hpp +29 -0
  1994. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty.hpp +0 -37
  1995. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +28 -5
  1996. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/limits/intercept_1024.hpp +530 -0
  1997. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/limits/intercept_256.hpp +273 -0
  1998. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/limits/intercept_512.hpp +274 -0
  1999. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/overload.hpp +1 -3
  2000. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/va_opt.hpp +34 -0
  2001. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities.hpp +2 -0
  2002. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward1.hpp +27 -0
  2003. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward2.hpp +27 -0
  2004. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward3.hpp +27 -0
  2005. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward4.hpp +27 -0
  2006. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward5.hpp +27 -0
  2007. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward1_1024.hpp +2573 -0
  2008. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward1_256.hpp +1296 -0
  2009. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward1_512.hpp +1293 -0
  2010. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward2_1024.hpp +2573 -0
  2011. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward2_256.hpp +1296 -0
  2012. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward2_512.hpp +1293 -0
  2013. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward3_1024.hpp +2573 -0
  2014. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward3_256.hpp +1296 -0
  2015. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward3_512.hpp +1293 -0
  2016. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward4_1024.hpp +2573 -0
  2017. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward4_256.hpp +1296 -0
  2018. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward4_512.hpp +1293 -0
  2019. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward5_1024.hpp +2573 -0
  2020. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward5_256.hpp +1296 -0
  2021. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward5_512.hpp +1293 -0
  2022. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse1_1024.hpp +2571 -0
  2023. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse1_256.hpp +1296 -0
  2024. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse1_512.hpp +1291 -0
  2025. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse2_1024.hpp +2571 -0
  2026. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse2_256.hpp +1296 -0
  2027. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse2_512.hpp +1293 -0
  2028. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse3_1024.hpp +2571 -0
  2029. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse3_256.hpp +1296 -0
  2030. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse3_512.hpp +1293 -0
  2031. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse4_1024.hpp +2571 -0
  2032. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse4_256.hpp +1296 -0
  2033. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse4_512.hpp +1293 -0
  2034. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse5_1024.hpp +2571 -0
  2035. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse5_256.hpp +1296 -0
  2036. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse5_512.hpp +1293 -0
  2037. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse1.hpp +25 -0
  2038. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse2.hpp +25 -0
  2039. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse3.hpp +25 -0
  2040. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse4.hpp +25 -0
  2041. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse5.hpp +25 -0
  2042. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/local_1024.hpp +1549 -0
  2043. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/local_256.hpp +782 -0
  2044. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/local_512.hpp +781 -0
  2045. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/rlocal_1024.hpp +1549 -0
  2046. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/rlocal_256.hpp +782 -0
  2047. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/rlocal_512.hpp +781 -0
  2048. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/local.hpp +27 -0
  2049. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/rlocal.hpp +25 -0
  2050. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/dmc/fold_left.hpp +3 -2
  2051. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/fold_left.hpp +28 -0
  2052. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/fold_right.hpp +29 -0
  2053. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_left_1024.hpp +1044 -0
  2054. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_left_256.hpp +533 -0
  2055. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_left_512.hpp +532 -0
  2056. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_right_1024.hpp +1557 -0
  2057. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_right_256.hpp +791 -0
  2058. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_right_512.hpp +789 -0
  2059. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/fold_left.hpp +28 -0
  2060. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/fold_right.hpp +26 -0
  2061. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_left_1024.hpp +532 -0
  2062. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_left_256.hpp +275 -0
  2063. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_left_512.hpp +276 -0
  2064. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_right_1024.hpp +532 -0
  2065. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_right_256.hpp +275 -0
  2066. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_right_512.hpp +276 -0
  2067. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/enum.hpp +13 -1
  2068. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/fold_left.hpp +60 -0
  2069. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/fold_right.hpp +44 -0
  2070. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/for_each_product.hpp +25 -6
  2071. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/limits/fold_left_1024.hpp +531 -0
  2072. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/limits/fold_left_256.hpp +275 -0
  2073. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/limits/fold_left_512.hpp +275 -0
  2074. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/reverse.hpp +35 -0
  2075. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/size.hpp +56 -1
  2076. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +21 -88
  2077. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_tuple.hpp +14 -14
  2078. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/bool.hpp +22 -0
  2079. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/limits/bool_1024.hpp +531 -0
  2080. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/limits/bool_256.hpp +275 -0
  2081. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/limits/bool_512.hpp +275 -0
  2082. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/is_begin_parens.hpp +1 -5
  2083. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/remove_parens.hpp +0 -4
  2084. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/deduce_r.hpp +27 -0
  2085. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/dmc/for.hpp +3 -2
  2086. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/for.hpp +26 -0
  2087. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/limits/for_1024.hpp +1044 -0
  2088. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/limits/for_256.hpp +533 -0
  2089. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/limits/for_512.hpp +532 -0
  2090. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/for.hpp +28 -0
  2091. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/limits/for_1024.hpp +1044 -0
  2092. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/limits/for_256.hpp +533 -0
  2093. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/limits/for_512.hpp +532 -0
  2094. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/msvc/for.hpp +1 -0
  2095. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +121 -7
  2096. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/for_1024.hpp +531 -0
  2097. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/for_256.hpp +275 -0
  2098. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/for_512.hpp +275 -0
  2099. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/repeat_1024.hpp +1557 -0
  2100. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/repeat_256.hpp +791 -0
  2101. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/repeat_512.hpp +789 -0
  2102. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/repeat.hpp +22 -0
  2103. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/repeat_from_to.hpp +27 -0
  2104. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +6 -11
  2105. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/is_empty.hpp +11 -11
  2106. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/limits/split_1024.hpp +530 -0
  2107. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/limits/split_256.hpp +272 -0
  2108. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/limits/split_512.hpp +274 -0
  2109. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/split.hpp +23 -0
  2110. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/elem.hpp +23 -0
  2111. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/enum.hpp +23 -0
  2112. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/fold_left.hpp +52 -0
  2113. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/fold_right.hpp +37 -0
  2114. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each.hpp +27 -27
  2115. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each_i.hpp +28 -28
  2116. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/elem_1024.hpp +530 -0
  2117. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/elem_256.hpp +272 -0
  2118. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/elem_512.hpp +274 -0
  2119. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/enum_1024.hpp +530 -0
  2120. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/enum_256.hpp +272 -0
  2121. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/enum_512.hpp +274 -0
  2122. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_left_1024.hpp +1556 -0
  2123. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_left_256.hpp +1053 -0
  2124. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_left_512.hpp +788 -0
  2125. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_right_1024.hpp +530 -0
  2126. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_right_256.hpp +273 -0
  2127. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_right_512.hpp +274 -0
  2128. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/size_1024.hpp +1043 -0
  2129. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/size_256.hpp +532 -0
  2130. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/size_512.hpp +531 -0
  2131. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/replace.hpp +7 -7
  2132. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +16 -10
  2133. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/size.hpp +23 -0
  2134. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/variadic_seq_to_seq.hpp +0 -2
  2135. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/stringize.hpp +1 -1
  2136. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +5 -5
  2137. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/eat.hpp +4 -18
  2138. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +11 -157
  2139. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +2 -7
  2140. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/reverse_128.hpp +403 -0
  2141. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/reverse_256.hpp +1171 -0
  2142. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/reverse_64.hpp +83 -0
  2143. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_list_128.hpp +595 -0
  2144. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_list_256.hpp +1747 -0
  2145. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_list_64.hpp +83 -0
  2146. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_128.hpp +403 -0
  2147. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +1171 -0
  2148. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_64.hpp +84 -0
  2149. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +16 -21
  2150. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +16 -21
  2151. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +1 -6
  2152. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +1 -7
  2153. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +21 -43
  2154. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +16 -21
  2155. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +2 -7
  2156. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +38 -25
  2157. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/size.hpp +13 -6
  2158. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_array.hpp +15 -12
  2159. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +37 -25
  2160. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +38 -24
  2161. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/has_opt.hpp +39 -0
  2162. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +5 -5
  2163. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/elem.hpp +93 -71
  2164. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +34 -0
  2165. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/elem_128.hpp +275 -0
  2166. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/elem_256.hpp +723 -0
  2167. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/elem_64.hpp +81 -0
  2168. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/size_128.hpp +47 -0
  2169. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/size_256.hpp +53 -0
  2170. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/size_64.hpp +23 -0
  2171. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/size.hpp +39 -4
  2172. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_array.hpp +15 -9
  2173. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_list.hpp +9 -2
  2174. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_seq.hpp +1 -3
  2175. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_tuple.hpp +1 -3
  2176. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic.hpp +1 -0
  2177. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/wstringize.hpp +1 -1
  2178. data/src/cxx_supportlib/vendor-modified/boost/random/additive_combine.hpp +2 -2
  2179. data/src/cxx_supportlib/vendor-modified/boost/random/detail/gray_coded_qrng.hpp +190 -0
  2180. data/src/cxx_supportlib/vendor-modified/boost/random/detail/int_float_pair.hpp +3 -4
  2181. data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +1 -1
  2182. data/src/cxx_supportlib/vendor-modified/boost/random/detail/mixmax_skip_N17.ipp +287 -0
  2183. data/src/cxx_supportlib/vendor-modified/boost/random/detail/niederreiter_base2_table.hpp +514 -0
  2184. data/src/cxx_supportlib/vendor-modified/boost/random/detail/operators.hpp +1 -1
  2185. data/src/cxx_supportlib/vendor-modified/boost/random/detail/qrng_base.hpp +291 -0
  2186. data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed.hpp +9 -11
  2187. data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed_impl.hpp +13 -14
  2188. data/src/cxx_supportlib/vendor-modified/boost/random/detail/sobol_table.hpp +4107 -0
  2189. data/src/cxx_supportlib/vendor-modified/boost/random/discard_block.hpp +2 -2
  2190. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +4 -0
  2191. data/src/cxx_supportlib/vendor-modified/boost/random/faure.hpp +367 -0
  2192. data/src/cxx_supportlib/vendor-modified/boost/random/generate_canonical.hpp +2 -3
  2193. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +3 -3
  2194. data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +3 -3
  2195. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +3 -4
  2196. data/src/cxx_supportlib/vendor-modified/boost/random/lagged_fibonacci.hpp +4 -4
  2197. data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +5 -7
  2198. data/src/cxx_supportlib/vendor-modified/boost/random/linear_feedback_shift.hpp +3 -3
  2199. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +2 -2
  2200. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +313 -0
  2201. data/src/cxx_supportlib/vendor-modified/boost/random/niederreiter_base2.hpp +360 -0
  2202. data/src/cxx_supportlib/vendor-modified/boost/random/random_device.hpp +2 -2
  2203. data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_order.hpp +2 -2
  2204. data/src/cxx_supportlib/vendor-modified/boost/random/sobol.hpp +238 -0
  2205. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +203 -0
  2206. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +18 -18
  2207. data/src/cxx_supportlib/vendor-modified/boost/random/traits.hpp +3 -3
  2208. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +7 -7
  2209. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +4 -5
  2210. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_smallint.hpp +4 -5
  2211. data/src/cxx_supportlib/vendor-modified/boost/random/xor_combine.hpp +4 -2
  2212. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +2 -0
  2213. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +43 -6
  2214. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +17 -15
  2215. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -2
  2216. data/src/cxx_supportlib/vendor-modified/boost/range/config.hpp +1 -1
  2217. data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +1 -3
  2218. data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +2 -2
  2219. data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +11 -5
  2220. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +18 -16
  2221. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +3 -3
  2222. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +0 -32
  2223. data/src/cxx_supportlib/vendor-modified/boost/range/rbegin.hpp +0 -13
  2224. data/src/cxx_supportlib/vendor-modified/boost/range/rend.hpp +0 -13
  2225. data/src/cxx_supportlib/vendor-modified/boost/range/size.hpp +1 -1
  2226. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +4 -78
  2227. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/gcd_lcm.hpp +53 -0
  2228. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_evenly_divisible_by.hpp +32 -0
  2229. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_ratio.hpp +28 -0
  2230. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +1 -3
  2231. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +5 -249
  2232. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +30 -56
  2233. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +0 -533
  2234. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +95 -51
  2235. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +82 -76
  2236. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +1 -1
  2237. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +104 -101
  2238. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +4 -72
  2239. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +4 -140
  2240. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +8 -761
  2241. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +4 -0
  2242. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +2 -0
  2243. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +32 -16
  2244. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +50 -25
  2245. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +64 -30
  2246. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +342 -42
  2247. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +111 -28
  2248. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -117
  2249. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +1516 -0
  2250. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +54 -0
  2251. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +18 -7
  2252. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +21 -12
  2253. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +39 -1
  2254. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +171 -0
  2255. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +128 -0
  2256. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +42 -18
  2257. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +24 -10
  2258. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +57 -54
  2259. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +12 -12
  2260. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +1 -1
  2261. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +3 -1
  2262. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -36
  2263. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +10 -8
  2264. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +2 -8
  2265. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +38 -7
  2266. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +3 -1
  2267. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +9 -15
  2268. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
  2269. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +653 -36
  2270. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -4
  2271. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +1 -1
  2272. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +1 -1
  2273. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +1 -9
  2274. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +3 -11
  2275. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +871 -0
  2276. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +526 -40
  2277. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +734 -0
  2278. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +1576 -0
  2279. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +3130 -0
  2280. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +474 -0
  2281. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +59 -0
  2282. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +1040 -0
  2283. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +195 -0
  2284. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +59 -0
  2285. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +1402 -0
  2286. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +84 -0
  2287. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +32 -0
  2288. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +156 -0
  2289. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +667 -0
  2290. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +173 -0
  2291. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +160 -0
  2292. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +106 -0
  2293. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +576 -0
  2294. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +921 -0
  2295. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +1874 -0
  2296. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/primary_transform.hpp +120 -0
  2297. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +158 -0
  2298. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +106 -0
  2299. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +1124 -0
  2300. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +73 -0
  2301. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +98 -0
  2302. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +173 -0
  2303. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +92 -0
  2304. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +71 -0
  2305. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +213 -0
  2306. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +77 -0
  2307. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +103 -0
  2308. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +152 -0
  2309. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +255 -0
  2310. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +130 -0
  2311. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +996 -0
  2312. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +159 -0
  2313. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +299 -0
  2314. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +382 -0
  2315. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +105 -0
  2316. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +177 -0
  2317. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +312 -0
  2318. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +862 -0
  2319. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +1311 -0
  2320. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +4 -0
  2321. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +4 -0
  2322. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +94 -444
  2323. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +5 -5
  2324. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +8 -4
  2325. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +7 -0
  2326. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +63 -0
  2327. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +11 -0
  2328. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_nt.hpp +7 -0
  2329. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +7 -0
  2330. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +7 -0
  2331. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +8 -1
  2332. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +13 -2
  2333. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +9 -9
  2334. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +3 -3
  2335. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +23 -0
  2336. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +88 -48
  2337. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +1 -1
  2338. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +12 -16
  2339. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +15 -4
  2340. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +12 -4
  2341. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +17 -4
  2342. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +148 -0
  2343. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +15 -4
  2344. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +15 -4
  2345. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +15 -4
  2346. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +15 -4
  2347. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +15 -4
  2348. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +27 -17
  2349. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +18 -9
  2350. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +16 -5
  2351. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +12 -4
  2352. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +27 -18
  2353. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +12 -4
  2354. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +15 -4
  2355. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +48 -31
  2356. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +30 -0
  2357. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +69 -0
  2358. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_typeinfo_.hpp +58 -0
  2359. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +7 -9
  2360. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +7 -0
  2361. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +94 -0
  2362. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +7 -0
  2363. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +7 -0
  2364. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +13 -5
  2365. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +8 -1
  2366. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +13 -141
  2367. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +1 -0
  2368. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +49 -12
  2369. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -0
  2370. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +23 -22
  2371. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +2 -1
  2372. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +70 -0
  2373. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +3 -2
  2374. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +3 -2
  2375. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +6 -4
  2376. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +120 -40
  2377. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +80 -8
  2378. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +5 -4
  2379. data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +4 -24
  2380. data/src/cxx_supportlib/vendor-modified/boost/system/detail/append_int.hpp +32 -0
  2381. data/src/cxx_supportlib/vendor-modified/boost/system/detail/cerrno.hpp +329 -0
  2382. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +83 -0
  2383. data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +23 -0
  2384. data/src/cxx_supportlib/vendor-modified/boost/system/detail/errc.hpp +126 -0
  2385. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +183 -0
  2386. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +166 -0
  2387. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +659 -0
  2388. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +326 -0
  2389. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +123 -0
  2390. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +120 -0
  2391. data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +107 -0
  2392. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +23 -0
  2393. data/src/cxx_supportlib/vendor-modified/boost/system/detail/mutex.hpp +128 -0
  2394. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +28 -0
  2395. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +84 -0
  2396. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +97 -0
  2397. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +110 -0
  2398. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +61 -0
  2399. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +71 -0
  2400. data/src/cxx_supportlib/vendor-modified/boost/system/detail/throws.hpp +59 -0
  2401. data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +57 -0
  2402. data/src/cxx_supportlib/vendor-modified/boost/system/error_category.hpp +13 -0
  2403. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +12 -760
  2404. data/src/cxx_supportlib/vendor-modified/boost/system/error_condition.hpp +13 -0
  2405. data/src/cxx_supportlib/vendor-modified/boost/system/generic_category.hpp +13 -0
  2406. data/src/cxx_supportlib/vendor-modified/boost/system/is_error_code_enum.hpp +30 -0
  2407. data/src/cxx_supportlib/vendor-modified/boost/system/is_error_condition_enum.hpp +30 -0
  2408. data/src/cxx_supportlib/vendor-modified/boost/system/system_category.hpp +14 -0
  2409. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +30 -59
  2410. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_adaptor.hpp +1 -1
  2411. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_base.hpp +1 -1
  2412. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +9 -21
  2413. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +9 -21
  2414. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_adaptor.hpp +1 -1
  2415. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_base.hpp +1 -1
  2416. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_op_status.hpp +3 -1
  2417. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +1 -1
  2418. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +3 -3
  2419. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +4 -4
  2420. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +3 -3
  2421. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +80 -14
  2422. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +1 -24
  2423. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +1 -14
  2424. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +1 -14
  2425. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +2 -12
  2426. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +0 -11
  2427. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +0 -2
  2428. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +0 -16
  2429. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +0 -11
  2430. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +0 -11
  2431. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +0 -19
  2432. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +4 -6
  2433. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +1 -24
  2434. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +1 -18
  2435. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +1 -14
  2436. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +18 -3
  2437. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +27 -21
  2438. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +13 -6
  2439. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +8 -3
  2440. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +8 -8
  2441. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_to_unsigned.hpp +55 -0
  2442. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_trim.hpp +29 -0
  2443. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +33 -12
  2444. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_safety.hpp +160 -0
  2445. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/tss_hooks.hpp +2 -2
  2446. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +3 -3
  2447. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +27 -1
  2448. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +2 -0
  2449. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor_adaptor.hpp +2 -0
  2450. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +2 -0
  2451. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/inline_executor.hpp +8 -0
  2452. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +4 -0
  2453. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +4 -0
  2454. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +2 -0
  2455. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +3 -0
  2456. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +4 -0
  2457. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor_cont.hpp +9 -2
  2458. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/thread_executor.hpp +6 -0
  2459. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/work.hpp +3 -1
  2460. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +6 -2
  2461. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +6 -5
  2462. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +12 -3
  2463. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +4 -2
  2464. data/src/cxx_supportlib/vendor-modified/boost/thread/interruption.hpp +22 -0
  2465. data/src/cxx_supportlib/vendor-modified/boost/thread/lock_guard.hpp +4 -4
  2466. data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_traits.hpp +31 -0
  2467. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_lockable.hpp +7 -2
  2468. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable.hpp +16 -12
  2469. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable_adapter.hpp +3 -4
  2470. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +20 -26
  2471. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +8 -15
  2472. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +17 -88
  2473. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +29 -28
  2474. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +1 -1
  2475. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +163 -18
  2476. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +5 -4
  2477. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +25 -25
  2478. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +1 -1
  2479. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +21 -13
  2480. data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +9 -0
  2481. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +4 -4
  2482. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +5 -0
  2483. data/src/cxx_supportlib/vendor-modified/boost/thread/tss.hpp +23 -41
  2484. data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +3 -0
  2485. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +1 -1
  2486. data/src/cxx_supportlib/vendor-modified/boost/thread/xtime.hpp +6 -6
  2487. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +232 -56
  2488. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +3 -2
  2489. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +35 -30
  2490. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +52 -1
  2491. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +1 -1
  2492. data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +1 -1
  2493. data/src/cxx_supportlib/vendor-modified/boost/type_traits/alignment_of.hpp +3 -3
  2494. data/src/cxx_supportlib/vendor-modified/boost/type_traits/conjunction.hpp +40 -0
  2495. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv_ref.hpp +31 -0
  2496. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_reference.hpp +35 -0
  2497. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +3 -1
  2498. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +36 -3
  2499. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +1 -1
  2500. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +6 -6
  2501. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +55 -0
  2502. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +72 -0
  2503. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +108 -0
  2504. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +676 -0
  2505. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_msvc10_fix.hpp +30 -0
  2506. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
  2507. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +415 -255
  2508. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +4 -3
  2509. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
  2510. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +1345 -1542
  2511. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +117 -0
  2512. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +697 -0
  2513. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp +43 -0
  2514. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_swappable_cxx_11.hpp +70 -0
  2515. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +1 -1
  2516. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +1 -1
  2517. data/src/cxx_supportlib/vendor-modified/boost/type_traits/disjunction.hpp +40 -0
  2518. data/src/cxx_supportlib/vendor-modified/boost/type_traits/enable_if.hpp +37 -0
  2519. data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +2 -2
  2520. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +344 -0
  2521. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +11 -6
  2522. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +11 -6
  2523. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_copy.hpp +1 -1
  2524. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +11 -6
  2525. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +21 -0
  2526. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +21 -0
  2527. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +21 -0
  2528. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +22 -0
  2529. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -1
  2530. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +2 -1
  2531. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +6 -16
  2532. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +2 -2
  2533. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +39 -15
  2534. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +2 -2
  2535. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_and_derived.hpp +2 -2
  2536. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_bounded_array.hpp +42 -0
  2537. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +6 -3
  2538. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_compound.hpp +1 -1
  2539. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +1 -1
  2540. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +1 -1
  2541. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +4 -4
  2542. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +3 -4
  2543. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +4 -6
  2544. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +1 -1
  2545. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -1
  2546. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +1 -1
  2547. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +1 -1
  2548. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +1 -1
  2549. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +4 -4
  2550. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_enum.hpp +4 -4
  2551. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +1 -1
  2552. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +22 -0
  2553. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +4 -79
  2554. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_fundamental.hpp +1 -1
  2555. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +6 -3
  2556. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_lvalue_reference.hpp +1 -1
  2557. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +3 -97
  2558. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_pointer.hpp +1 -1
  2559. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_noncopyable.hpp +39 -0
  2560. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +2 -2
  2561. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -2
  2562. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +4 -24
  2563. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pointer.hpp +1 -1
  2564. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -0
  2565. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_same.hpp +1 -1
  2566. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_scoped_enum.hpp +26 -0
  2567. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_signed.hpp +2 -2
  2568. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_swappable.hpp +92 -0
  2569. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_trivially_copyable.hpp +31 -0
  2570. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unbounded_array.hpp +41 -0
  2571. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unscoped_enum.hpp +25 -0
  2572. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unsigned.hpp +2 -2
  2573. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +105 -64
  2574. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +1 -1
  2575. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +1 -1
  2576. data/src/cxx_supportlib/vendor-modified/boost/type_traits/negation.hpp +23 -0
  2577. data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +1 -1
  2578. data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +4 -4
  2579. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
  2580. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
  2581. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
  2582. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
  2583. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
  2584. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +3 -3
  2585. data/src/cxx_supportlib/vendor-modified/boost/typeof/constant.hpp +26 -0
  2586. data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +2 -3
  2587. data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +1 -10
  2588. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +9 -10
  2589. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +2 -4
  2590. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +2 -4
  2591. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +2 -5
  2592. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +2 -15
  2593. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +4 -51
  2594. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +2 -6
  2595. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +2 -9
  2596. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +2 -46
  2597. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +2 -5
  2598. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +2 -29
  2599. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +2 -9
  2600. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +4 -9
  2601. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +2 -6
  2602. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +2 -5
  2603. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +2 -9
  2604. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +2 -19
  2605. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +2 -5
  2606. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +2 -5
  2607. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +2 -12
  2608. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +2 -4
  2609. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +2 -10
  2610. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +2 -5
  2611. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +8 -202
  2612. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +872 -0
  2613. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +66 -0
  2614. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +728 -0
  2615. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +67 -0
  2616. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocator_constructed.hpp +59 -0
  2617. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/archive_constructed.hpp +71 -0
  2618. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/bad_archive_exception.hpp +27 -0
  2619. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +105 -0
  2620. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +900 -0
  2621. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +1792 -0
  2622. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2380 -0
  2623. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
  2624. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/element_type.hpp +64 -0
  2625. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +86 -0
  2626. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_set_types.hpp +44 -0
  2627. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/ignore_wshadow.hpp +35 -0
  2628. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +204 -0
  2629. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +139 -0
  2630. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +92 -0
  2631. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/reentrancy_check.hpp +138 -0
  2632. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/restore_wshadow.hpp +11 -0
  2633. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/rw_spinlock.hpp +179 -0
  2634. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +661 -0
  2635. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/tuple_rotate_right.hpp +52 -0
  2636. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +1462 -3502
  2637. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +10 -14
  2638. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/mulx.hpp +129 -0
  2639. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/narrow_cast.hpp +44 -0
  2640. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/opt_storage.hpp +30 -0
  2641. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +214 -0
  2642. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialization_version.hpp +74 -0
  2643. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_container.hpp +204 -0
  2644. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_fca_container.hpp +156 -0
  2645. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_tracked_address.hpp +104 -0
  2646. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +8 -13
  2647. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/static_assert.hpp +16 -0
  2648. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/throw_exception.hpp +30 -0
  2649. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +226 -0
  2650. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
  2651. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +70 -0
  2652. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +812 -0
  2653. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +59 -0
  2654. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +622 -0
  2655. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +58 -0
  2656. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +768 -1002
  2657. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +35 -13
  2658. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +907 -0
  2659. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +59 -0
  2660. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +711 -0
  2661. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +58 -0
  2662. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +547 -672
  2663. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +35 -15
  2664. data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +2 -1
  2665. data/src/cxx_supportlib/vendor-modified/boost/utility/binary.hpp +3 -2
  2666. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +4 -43
  2667. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +3 -3
  2668. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_variadic.hpp +190 -0
  2669. data/src/cxx_supportlib/vendor-modified/boost/utility/in_place_factory.hpp +6 -0
  2670. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +33 -11
  2671. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +11 -44
  2672. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +56 -52
  2673. data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +4 -1
  2674. data/src/cxx_supportlib/vendor-modified/boost/utility/typed_in_place_factory.hpp +6 -1
  2675. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +41 -75
  2676. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  2677. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +2 -9
  2678. data/src/cxx_supportlib/vendor-modified/modp_b64_data.h +0 -4
  2679. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +7 -3
  2680. data/src/cxx_supportlib/vendor-modified/websocketpp/changelog.md +444 -0
  2681. data/src/cxx_supportlib/vendor-modified/websocketpp/readme.md +49 -0
  2682. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/close.hpp +353 -0
  2683. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/asio.hpp +141 -0
  2684. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/functional.hpp +100 -0
  2685. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +448 -0
  2686. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/memory.hpp +88 -0
  2687. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/thread.hpp +88 -0
  2688. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/core.hpp +297 -0
  2689. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/connection.hpp +1642 -0
  2690. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/endpoint.hpp +700 -0
  2691. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +129 -0
  2692. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +817 -0
  2693. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +853 -0
  2694. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/parser.hpp +200 -0
  2695. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/parser.hpp +629 -0
  2696. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/connection_impl.hpp +2375 -0
  2697. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/endpoint_impl.hpp +269 -0
  2698. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/base.hpp +299 -0
  2699. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +1072 -0
  2700. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/client_endpoint.hpp +173 -0
  2701. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/server_endpoint.hpp +195 -0
  2702. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/sha1/sha1.hpp +189 -0
  2703. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/connection.hpp +1197 -0
  2704. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/endpoint.hpp +1182 -0
  2705. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/none.hpp +372 -0
  2706. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/tls.hpp +474 -0
  2707. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/base/endpoint.hpp +77 -0
  2708. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/connection.hpp +412 -0
  2709. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/endpoint.hpp +140 -0
  2710. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/connection.hpp +714 -0
  2711. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/endpoint.hpp +222 -0
  2712. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/connection.hpp +286 -0
  2713. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/uri.hpp +356 -0
  2714. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/utilities.hpp +180 -0
  2715. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/version.hpp +61 -0
  2716. data/src/helper-scripts/backtrace-sanitizer.rb +2 -2
  2717. data/src/helper-scripts/crash-watch.rb +1 -1
  2718. data/src/helper-scripts/download_binaries/extconf.rb +2 -2
  2719. data/src/helper-scripts/meteor-loader.rb +9 -4
  2720. data/src/helper-scripts/node-loader.js +3 -3
  2721. data/src/helper-scripts/prespawn +3 -2
  2722. data/src/helper-scripts/rack-loader.rb +2 -2
  2723. data/src/helper-scripts/rack-preloader.rb +2 -2
  2724. data/src/helper-scripts/wsgi-loader.py +36 -19
  2725. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +98 -2
  2726. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +2 -2
  2727. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +59 -2
  2728. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +2 -2
  2729. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +122 -2
  2730. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +2 -2
  2731. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +2 -2
  2732. data/src/nginx_module/Configuration.c +40 -11
  2733. data/src/nginx_module/Configuration.h +1 -1
  2734. data/src/nginx_module/ContentHandler.c +306 -24
  2735. data/src/nginx_module/ContentHandler.h +6 -1
  2736. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +49 -2
  2737. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
  2738. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +86 -2
  2739. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +2 -2
  2740. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +111 -2
  2741. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
  2742. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +23 -2
  2743. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +2 -2
  2744. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +36 -2
  2745. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  2746. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +18 -2
  2747. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
  2748. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +36 -2
  2749. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
  2750. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +14 -2
  2751. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  2752. data/src/nginx_module/StaticContentHandler.c +1 -1
  2753. data/src/nginx_module/StaticContentHandler.h +1 -1
  2754. data/src/nginx_module/config +2 -0
  2755. data/src/nginx_module/ngx_http_passenger_module.c +7 -4
  2756. data/src/nginx_module/ngx_http_passenger_module.h +6 -1
  2757. data/src/nodejs_supportlib/phusion_passenger/line_reader.js +2 -2
  2758. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/common.js +50 -29
  2759. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/cli-config.js +20 -20
  2760. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/npm-config.js +11 -11
  2761. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/syslog-config.js +3 -3
  2762. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config.js +8 -2
  2763. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/container.js +2 -1
  2764. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/logger.js +174 -146
  2765. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/console.js +4 -2
  2766. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/file.js +15 -5
  2767. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/http.js +14 -4
  2768. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports.js +26 -24
  2769. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston.js +5 -5
  2770. data/src/nodejs_supportlib/vendor-copy/winston/node_modules/async/package.json +4 -13
  2771. data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/package.json +19 -33
  2772. data/src/nodejs_supportlib/vendor-copy/winston/node_modules/cycle/package.json +11 -29
  2773. data/src/nodejs_supportlib/vendor-copy/winston/node_modules/eyes/package.json +12 -40
  2774. data/src/nodejs_supportlib/vendor-copy/winston/node_modules/isstream/package.json +3 -12
  2775. data/src/nodejs_supportlib/vendor-copy/winston/node_modules/stack-trace/lib/stack-trace.js +49 -24
  2776. data/src/nodejs_supportlib/vendor-copy/winston/node_modules/stack-trace/package.json +4 -16
  2777. data/src/nodejs_supportlib/vendor-copy/winston/package.json +11 -55
  2778. data/src/ruby_native_extension/extconf.rb +9 -2
  2779. data/src/ruby_native_extension/passenger_native_support.c +3 -2
  2780. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +2 -2
  2781. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +2 -2
  2782. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +15 -3
  2783. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +3 -3
  2784. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +3 -3
  2785. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +55 -2
  2786. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +2 -2
  2787. data/src/ruby_supportlib/phusion_passenger/common_library.rb +19 -6
  2788. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +2 -2
  2789. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +2 -2
  2790. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +2 -2
  2791. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +2 -2
  2792. data/src/ruby_supportlib/phusion_passenger/config/command.rb +2 -2
  2793. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +2 -2
  2794. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +8 -4
  2795. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +2 -2
  2796. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -3
  2797. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -3
  2798. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +2 -2
  2799. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +12 -2
  2800. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +2 -2
  2801. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +2 -2
  2802. data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -2
  2803. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +16 -7
  2804. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +2 -2
  2805. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +18 -14
  2806. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +2 -2
  2807. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +2 -2
  2808. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +2 -2
  2809. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +2 -2
  2810. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +9 -4
  2811. data/src/ruby_supportlib/phusion_passenger/constants.rb +6 -4
  2812. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -2
  2813. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +39 -12
  2814. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +2 -2
  2815. data/src/ruby_supportlib/phusion_passenger/message_client.rb +2 -2
  2816. data/src/ruby_supportlib/phusion_passenger/native_support.rb +12 -7
  2817. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +84 -2
  2818. data/src/ruby_supportlib/phusion_passenger/packaging.rb +5 -3
  2819. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +12 -15
  2820. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +2 -2
  2821. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +25 -21
  2822. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +49 -8
  2823. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +2 -2
  2824. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +5 -2
  2825. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +10 -4
  2826. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -0
  2827. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +10 -6
  2828. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +4 -3
  2829. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +2 -2
  2830. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +7 -2
  2831. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +49 -30
  2832. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +64 -0
  2833. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +4 -4
  2834. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -2
  2835. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +2 -2
  2836. data/src/ruby_supportlib/phusion_passenger/plugin.rb +2 -2
  2837. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +14 -8
  2838. data/src/ruby_supportlib/phusion_passenger/public_api.rb +5 -2
  2839. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +73 -0
  2840. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
  2841. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +24 -3
  2842. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +32 -58
  2843. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +25 -20
  2844. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +13 -9
  2845. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +7 -2
  2846. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +2 -2
  2847. data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +2 -2
  2848. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +3 -2
  2849. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +2 -2
  2850. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +53 -3
  2851. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -2
  2852. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +2 -2
  2853. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +2 -2
  2854. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +13 -5
  2855. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +32 -21
  2856. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +3 -7
  2857. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +3 -4
  2858. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +9 -3
  2859. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +2 -2
  2860. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +2 -2
  2861. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +2 -2
  2862. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +2 -2
  2863. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +2 -2
  2864. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -198
  2865. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +2 -2
  2866. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +2 -2
  2867. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +2 -2
  2868. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +67 -0
  2869. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +6 -0
  2870. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +2 -2
  2871. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +17 -13
  2872. data/src/ruby_supportlib/phusion_passenger/utils.rb +8 -17
  2873. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +2 -2
  2874. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +1 -1
  2875. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +5 -1
  2876. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +6 -2
  2877. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +1 -1
  2878. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +1 -1
  2879. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +1 -1
  2880. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +1 -1
  2881. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +1 -1
  2882. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +1 -1
  2883. data/src/ruby_supportlib/phusion_passenger.rb +12 -11
  2884. data/src/schema_printer/SchemaPrinterMain.cpp +2 -2
  2885. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +2 -2
  2886. metadata +935 -308
  2887. data/src/cxx_supportlib/ServerKit/http_parser.cpp +0 -2265
  2888. data/src/cxx_supportlib/ServerKit/http_parser.h +0 -330
  2889. data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +0 -342
  2890. data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +0 -49
  2891. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +0 -342
  2892. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +0 -131
  2893. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/functional.hpp +0 -105
  2894. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/md5.hpp +0 -448
  2895. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +0 -89
  2896. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +0 -84
  2897. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +0 -285
  2898. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +0 -1651
  2899. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +0 -700
  2900. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +0 -128
  2901. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +0 -752
  2902. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +0 -861
  2903. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +0 -196
  2904. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +0 -619
  2905. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +0 -2372
  2906. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +0 -269
  2907. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +0 -299
  2908. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +0 -1056
  2909. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +0 -173
  2910. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +0 -190
  2911. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +0 -189
  2912. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +0 -1204
  2913. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +0 -1147
  2914. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +0 -370
  2915. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +0 -484
  2916. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +0 -77
  2917. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +0 -412
  2918. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +0 -140
  2919. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +0 -714
  2920. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +0 -222
  2921. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +0 -286
  2922. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +0 -355
  2923. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +0 -182
  2924. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +0 -61
  2925. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +0 -457
  2926. data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +0 -468
  2927. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +0 -175
  2928. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +0 -93
  2929. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +0 -70
  2930. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +0 -67
  2931. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +0 -101
  2932. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +0 -57
  2933. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +0 -154
  2934. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +0 -64
  2935. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +0 -216
  2936. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +0 -238
  2937. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +0 -42
  2938. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +0 -64
  2939. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +0 -119
  2940. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +0 -67
  2941. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +0 -878
  2942. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +0 -93
  2943. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/redirect_error.hpp +0 -296
  2944. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/redirect_error.hpp +0 -69
  2945. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +0 -22
  2946. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +0 -83
  2947. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +0 -87
  2948. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +0 -52
  2949. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +0 -79
  2950. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +0 -80
  2951. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +0 -54
  2952. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +0 -79
  2953. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +0 -25
  2954. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +0 -202
  2955. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +0 -281
  2956. data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +0 -468
  2957. data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +0 -418
  2958. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +0 -251
  2959. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +0 -144
  2960. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +0 -374
  2961. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +0 -414
  2962. data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +0 -212
  2963. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +0 -275
  2964. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +0 -184
  2965. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +0 -378
  2966. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +0 -361
  2967. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +0 -383
  2968. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +0 -185
  2969. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +0 -333
  2970. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +0 -118
  2971. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +0 -380
  2972. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +0 -216
  2973. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +0 -364
  2974. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +0 -212
  2975. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +0 -71
  2976. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +0 -1248
  2977. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_alpha.hpp +0 -34
  2978. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +0 -39
  2979. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +0 -37
  2980. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sparc.hpp +0 -34
  2981. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +0 -40
  2982. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_arm.hpp +0 -34
  2983. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +0 -55
  2984. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_arm.hpp +0 -67
  2985. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_ppc.hpp +0 -42
  2986. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_x86.hpp +0 -58
  2987. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_extend.hpp +0 -105
  2988. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lockpool.hpp +0 -51
  2989. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations.hpp +0 -24
  2990. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_fwd.hpp +0 -35
  2991. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +0 -30
  2992. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +0 -107
  2993. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +0 -162
  2994. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +0 -69
  2995. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +0 -876
  2996. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +0 -1397
  2997. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +0 -392
  2998. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +0 -1232
  2999. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +0 -240
  3000. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +0 -240
  3001. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +0 -563
  3002. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +0 -555
  3003. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +0 -180
  3004. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +0 -824
  3005. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +0 -908
  3006. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +0 -207
  3007. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_cc.hpp +0 -117
  3008. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +0 -228
  3009. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +0 -441
  3010. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +0 -345
  3011. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +0 -103
  3012. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_template.hpp +0 -1047
  3013. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +0 -130
  3014. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +0 -475
  3015. data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +0 -41
  3016. data/src/cxx_supportlib/vendor-modified/boost/call_traits.hpp +0 -20
  3017. data/src/cxx_supportlib/vendor-modified/boost/checked_delete.hpp +0 -17
  3018. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +0 -68
  3019. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
  3020. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
  3021. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
  3022. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -414
  3023. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  3024. data/src/cxx_supportlib/vendor-modified/boost/detail/call_traits.hpp +0 -172
  3025. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
  3026. data/src/cxx_supportlib/vendor-modified/boost/detail/endian.hpp +0 -11
  3027. data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +0 -39
  3028. data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +0 -17
  3029. data/src/cxx_supportlib/vendor-modified/boost/detail/sp_typeinfo.hpp +0 -36
  3030. data/src/cxx_supportlib/vendor-modified/boost/function/detail/function_iterate.hpp +0 -16
  3031. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +0 -39
  3032. data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +0 -369
  3033. data/src/cxx_supportlib/vendor-modified/boost/function/detail/prologue.hpp +0 -26
  3034. data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +0 -26
  3035. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +0 -6
  3036. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +0 -206
  3037. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cpp_regex_traits.cpp +0 -117
  3038. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +0 -660
  3039. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/instances.cpp +0 -32
  3040. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_raw_buffer.cpp +0 -72
  3041. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_traits_defaults.cpp +0 -692
  3042. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +0 -314
  3043. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/winstances.cpp +0 -35
  3044. data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +0 -1040
  3045. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +0 -581
  3046. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/round_fwd.hpp +0 -93
  3047. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +0 -640
  3048. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +0 -1651
  3049. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +0 -194
  3050. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +0 -469
  3051. data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +0 -182
  3052. data/src/cxx_supportlib/vendor-modified/boost/math/tools/real_cast.hpp +0 -31
  3053. data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +0 -105
  3054. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/overloads.hpp +0 -88
  3055. data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +0 -55
  3056. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +0 -26
  3057. data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +0 -45
  3058. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +0 -89
  3059. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +0 -124
  3060. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +0 -126
  3061. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +0 -89
  3062. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +0 -367
  3063. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +0 -1342
  3064. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +0 -30
  3065. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +0 -22
  3066. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +0 -19
  3067. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +0 -30
  3068. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +0 -30
  3069. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +0 -30
  3070. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +0 -30
  3071. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +0 -30
  3072. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +0 -30
  3073. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +0 -30
  3074. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +0 -30
  3075. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +0 -30
  3076. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +0 -30
  3077. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +0 -30
  3078. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +0 -31
  3079. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +0 -30
  3080. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +0 -25
  3081. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +0 -15
  3082. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +0 -30
  3083. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +0 -30
  3084. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +0 -455
  3085. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +0 -225
  3086. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_solaris.hpp +0 -59
  3087. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +0 -150
  3088. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +0 -160
  3089. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +0 -115
  3090. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +0 -69
  3091. data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +0 -17
  3092. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +0 -496
  3093. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +0 -276
  3094. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +0 -297
  3095. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +0 -265
  3096. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +0 -100
  3097. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -61
  3098. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +0 -34
  3099. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +0 -118
  3100. data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +0 -80
  3101. data/src/cxx_supportlib/vendor-modified/boost/typeof/message.hpp +0 -8
  3102. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +0 -121
  3103. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +0 -60
  3104. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +0 -38
  3105. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +0 -50
  3106. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +0 -135
  3107. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +0 -61
  3108. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +0 -32
  3109. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +0 -160
  3110. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +0 -149
  3111. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +0 -27
  3112. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +0 -37
  3113. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +0 -186
  3114. data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +0 -29
  3115. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +0 -166
  3116. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +0 -321
  3117. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +0 -471
  3118. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +0 -621
  3119. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +0 -171
  3120. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +0 -63
  3121. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/daily-rotate-file.js +0 -601
  3122. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/webhook.js +0 -146
  3123. data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/LICENSE +0 -19
  3124. data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/lib/pkginfo.js +0 -136
  3125. data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/package.json +0 -56
  3126. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/COPYING +0 -0
  3127. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/base64/base64.hpp +0 -0
  3128. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/client.hpp +0 -0
  3129. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/asio_ssl.hpp +0 -0
  3130. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/chrono.hpp +0 -0
  3131. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/connection_hdl.hpp +0 -0
  3132. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/cpp11.hpp +0 -0
  3133. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/network.hpp +0 -0
  3134. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/platforms.hpp +0 -0
  3135. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/random.hpp +0 -0
  3136. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/regex.hpp +0 -0
  3137. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/stdint.hpp +0 -0
  3138. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/system_error.hpp +0 -0
  3139. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/time.hpp +0 -0
  3140. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/type_traits.hpp +0 -0
  3141. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/concurrency/basic.hpp +0 -0
  3142. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/concurrency/none.hpp +0 -0
  3143. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/asio.hpp +0 -0
  3144. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/asio_client.hpp +0 -0
  3145. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/asio_no_tls.hpp +0 -0
  3146. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/asio_no_tls_client.hpp +0 -0
  3147. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/boost_config.hpp +0 -0
  3148. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/core_client.hpp +0 -0
  3149. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/debug.hpp +0 -0
  3150. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/debug_asio.hpp +0 -0
  3151. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/debug_asio_no_tls.hpp +0 -0
  3152. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/minimal_client.hpp +0 -0
  3153. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/minimal_server.hpp +0 -0
  3154. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/connection_base.hpp +0 -0
  3155. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/endpoint_base.hpp +0 -0
  3156. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/error.hpp +0 -0
  3157. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/extensions/extension.hpp +0 -0
  3158. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/http/constants.hpp +0 -0
  3159. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/http/impl/request.hpp +0 -0
  3160. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/http/impl/response.hpp +0 -0
  3161. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/http/request.hpp +0 -0
  3162. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/http/response.hpp +0 -0
  3163. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/impl/utilities_impl.hpp +0 -0
  3164. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/logger/basic.hpp +0 -0
  3165. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/logger/levels.hpp +0 -0
  3166. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/logger/stub.hpp +0 -0
  3167. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/logger/syslog.hpp +0 -0
  3168. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/message_buffer/alloc.hpp +0 -0
  3169. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/message_buffer/message.hpp +0 -0
  3170. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/message_buffer/pool.hpp +0 -0
  3171. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/processors/hybi00.hpp +0 -0
  3172. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/processors/hybi07.hpp +0 -0
  3173. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/processors/hybi08.hpp +0 -0
  3174. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/processors/processor.hpp +0 -0
  3175. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/random/none.hpp +0 -0
  3176. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/random/random_device.hpp +0 -0
  3177. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/server.hpp +0 -0
  3178. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/asio/base.hpp +0 -0
  3179. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/asio/security/base.hpp +0 -0
  3180. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/base/connection.hpp +0 -0
  3181. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/debug/base.hpp +0 -0
  3182. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/iostream/base.hpp +0 -0
  3183. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/stub/base.hpp +0 -0
  3184. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/stub/endpoint.hpp +0 -0
  3185. /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/utf8_validator.hpp +0 -0
@@ -51,6 +51,7 @@
51
51
  #include <boost/move/iterator.hpp>
52
52
  #include <boost/move/traits.hpp>
53
53
  #include <boost/move/utility_core.hpp>
54
+ #include <boost/move/detail/launder.hpp>
54
55
  // move/detail
55
56
  #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
56
57
  #include <boost/move/detail/fwd_macros.hpp>
@@ -62,7 +63,6 @@
62
63
  #include <boost/move/algo/predicate.hpp>
63
64
  #include <boost/move/algo/detail/set_difference.hpp>
64
65
  // other
65
- #include <boost/core/no_exceptions_support.hpp>
66
66
  #include <boost/assert.hpp>
67
67
  #include <boost/cstdint.hpp>
68
68
 
@@ -82,8 +82,21 @@ class vec_iterator
82
82
  {
83
83
  public:
84
84
  typedef std::random_access_iterator_tag iterator_category;
85
+ #ifdef BOOST_MOVE_CONTIGUOUS_ITERATOR_TAG
86
+ typedef std::contiguous_iterator_tag iterator_concept;
87
+ #endif
85
88
  typedef typename boost::intrusive::pointer_traits<Pointer>::element_type value_type;
89
+
90
+ //Defining element_type to make libstdc++'s std::pointer_traits well-formed leads to ambiguity
91
+ //due to LWG3446. So we need to specialize std::pointer_traits. See
92
+ //https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96416 for details. Many thanks to Jonathan Wakely
93
+ //for explaining the issue.
94
+ #ifndef BOOST_GNU_STDLIB
95
+ //Define element_
96
+ typedef typename boost::intrusive::pointer_traits<Pointer>::element_type element_type;
97
+ #endif
86
98
  typedef typename boost::intrusive::pointer_traits<Pointer>::difference_type difference_type;
99
+ typedef typename boost::intrusive::pointer_traits<Pointer>::size_type size_type;
87
100
  typedef typename dtl::if_c
88
101
  < IsConst
89
102
  , typename boost::intrusive::pointer_traits<Pointer>::template
@@ -97,14 +110,26 @@ class vec_iterator
97
110
  private:
98
111
  Pointer m_ptr;
99
112
 
113
+ class nat
114
+ {
115
+ public:
116
+ Pointer get_ptr() const
117
+ { return Pointer(); }
118
+ };
119
+ typedef typename dtl::if_c< IsConst
120
+ , vec_iterator<Pointer, false>
121
+ , nat>::type nonconst_iterator;
122
+
100
123
  public:
101
- BOOST_CONTAINER_FORCEINLINE const Pointer &get_ptr() const BOOST_NOEXCEPT_OR_NOTHROW
124
+ inline
125
+ const Pointer &get_ptr() const BOOST_NOEXCEPT_OR_NOTHROW
102
126
  { return m_ptr; }
103
127
 
104
- BOOST_CONTAINER_FORCEINLINE Pointer &get_ptr() BOOST_NOEXCEPT_OR_NOTHROW
128
+ inline
129
+ Pointer &get_ptr() BOOST_NOEXCEPT_OR_NOTHROW
105
130
  { return m_ptr; }
106
131
 
107
- BOOST_CONTAINER_FORCEINLINE explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW
132
+ inline explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW
108
133
  : m_ptr(ptr)
109
134
  {}
110
135
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
@@ -112,73 +137,94 @@ class vec_iterator
112
137
  public:
113
138
 
114
139
  //Constructors
115
- BOOST_CONTAINER_FORCEINLINE vec_iterator() BOOST_NOEXCEPT_OR_NOTHROW
140
+ inline vec_iterator() BOOST_NOEXCEPT_OR_NOTHROW
116
141
  : m_ptr() //Value initialization to achieve "null iterators" (N3644)
117
142
  {}
118
143
 
119
- BOOST_CONTAINER_FORCEINLINE vec_iterator(vec_iterator<Pointer, false> const& other) BOOST_NOEXCEPT_OR_NOTHROW
144
+ inline vec_iterator(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW
145
+ : m_ptr(other.get_ptr())
146
+ {}
147
+
148
+ inline vec_iterator(const nonconst_iterator &other) BOOST_NOEXCEPT_OR_NOTHROW
120
149
  : m_ptr(other.get_ptr())
121
150
  {}
122
151
 
152
+ inline vec_iterator & operator=(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW
153
+ { m_ptr = other.get_ptr(); return *this; }
154
+
123
155
  //Pointer like operators
124
- BOOST_CONTAINER_FORCEINLINE reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
125
- { return *m_ptr; }
156
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
157
+ reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
158
+ { BOOST_ASSERT(!!m_ptr); return *m_ptr; }
126
159
 
127
- BOOST_CONTAINER_FORCEINLINE pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
128
- { return ::boost::intrusive::pointer_traits<pointer>::pointer_to(this->operator*()); }
160
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
161
+ pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
162
+ { return m_ptr; }
129
163
 
130
- BOOST_CONTAINER_FORCEINLINE reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
131
- { return m_ptr[off]; }
164
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
165
+ reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
166
+ { BOOST_ASSERT(!!m_ptr); return m_ptr[off]; }
132
167
 
133
168
  //Increment / Decrement
134
- BOOST_CONTAINER_FORCEINLINE vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
135
- { ++m_ptr; return *this; }
169
+ inline vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
170
+ { BOOST_ASSERT(!!m_ptr); ++m_ptr; return *this; }
136
171
 
137
- BOOST_CONTAINER_FORCEINLINE vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
138
- { return vec_iterator(m_ptr++); }
172
+ inline vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
173
+ { BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr++); }
139
174
 
140
- BOOST_CONTAINER_FORCEINLINE vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
141
- { --m_ptr; return *this; }
175
+ inline vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
176
+ { BOOST_ASSERT(!!m_ptr); --m_ptr; return *this; }
142
177
 
143
- BOOST_CONTAINER_FORCEINLINE vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
144
- { return vec_iterator(m_ptr--); }
178
+ inline vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
179
+ { BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr--); }
145
180
 
146
181
  //Arithmetic
147
- BOOST_CONTAINER_FORCEINLINE vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
148
- { m_ptr += off; return *this; }
182
+ inline vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
183
+ { BOOST_ASSERT(m_ptr || !off); m_ptr += off; return *this; }
149
184
 
150
- BOOST_CONTAINER_FORCEINLINE vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
151
- { m_ptr -= off; return *this; }
185
+ inline vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
186
+ { BOOST_ASSERT(m_ptr || !off); m_ptr -= off; return *this; }
152
187
 
153
- BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
154
- { return vec_iterator(x.m_ptr+off); }
188
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
189
+ friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
190
+ { BOOST_ASSERT(x.m_ptr || !off); return vec_iterator(x.m_ptr+off); }
155
191
 
156
- BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
157
- { right.m_ptr += off; return right; }
192
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
193
+ friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
194
+ { BOOST_ASSERT(right.m_ptr || !off); right.m_ptr += off; return right; }
158
195
 
159
- BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
160
- { left.m_ptr -= off; return left; }
196
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
197
+ friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
198
+ { BOOST_ASSERT(left.m_ptr || !off); left.m_ptr -= off; return left; }
161
199
 
162
- BOOST_CONTAINER_FORCEINLINE friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
200
+ //Difference
201
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
202
+ friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
163
203
  { return left.m_ptr - right.m_ptr; }
164
204
 
165
205
  //Comparison operators
166
- BOOST_CONTAINER_FORCEINLINE friend bool operator== (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
206
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
207
+ friend bool operator== (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
167
208
  { return l.m_ptr == r.m_ptr; }
168
209
 
169
- BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
210
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
211
+ friend bool operator!= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
170
212
  { return l.m_ptr != r.m_ptr; }
171
213
 
172
- BOOST_CONTAINER_FORCEINLINE friend bool operator< (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
214
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
215
+ friend bool operator< (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
173
216
  { return l.m_ptr < r.m_ptr; }
174
217
 
175
- BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
218
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
219
+ friend bool operator<= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
176
220
  { return l.m_ptr <= r.m_ptr; }
177
221
 
178
- BOOST_CONTAINER_FORCEINLINE friend bool operator> (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
222
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
223
+ friend bool operator> (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
179
224
  { return l.m_ptr > r.m_ptr; }
180
225
 
181
- BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
226
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
227
+ friend bool operator>= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
182
228
  { return l.m_ptr >= r.m_ptr; }
183
229
  };
184
230
 
@@ -188,7 +234,7 @@ struct vector_insert_ordered_cursor
188
234
  typedef typename iterator_traits<BiDirPosConstIt>::value_type size_type;
189
235
  typedef typename iterator_traits<BiDirValueIt>::reference reference;
190
236
 
191
- BOOST_CONTAINER_FORCEINLINE vector_insert_ordered_cursor(BiDirPosConstIt posit, BiDirValueIt valueit)
237
+ inline vector_insert_ordered_cursor(BiDirPosConstIt posit, BiDirValueIt valueit)
192
238
  : last_position_it(posit), last_value_it(valueit)
193
239
  {}
194
240
 
@@ -202,41 +248,38 @@ struct vector_insert_ordered_cursor
202
248
  }
203
249
  }
204
250
 
205
- BOOST_CONTAINER_FORCEINLINE size_type get_pos() const
251
+ inline size_type get_pos() const
206
252
  { return *last_position_it; }
207
253
 
208
- BOOST_CONTAINER_FORCEINLINE reference get_val()
254
+ inline reference get_val()
209
255
  { return *last_value_it; }
210
256
 
211
257
  BiDirPosConstIt last_position_it;
212
258
  BiDirValueIt last_value_it;
213
259
  };
214
260
 
215
- struct initial_capacity_t{};
216
-
217
261
  template<class Pointer, bool IsConst>
218
- BOOST_CONTAINER_FORCEINLINE const Pointer &vector_iterator_get_ptr(const vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
262
+ inline const Pointer &vector_iterator_get_ptr(const vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
219
263
  { return it.get_ptr(); }
220
264
 
221
265
  template<class Pointer, bool IsConst>
222
- BOOST_CONTAINER_FORCEINLINE Pointer &get_ptr(vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
266
+ inline Pointer &get_ptr(vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
223
267
  { return it.get_ptr(); }
224
268
 
269
+ struct initial_capacity_t {};
270
+
225
271
  struct vector_uninitialized_size_t {};
226
- static const vector_uninitialized_size_t vector_uninitialized_size = vector_uninitialized_size_t();
272
+ BOOST_CONTAINER_CONSTANT_VAR vector_uninitialized_size_t vector_uninitialized_size = vector_uninitialized_size_t();
273
+
274
+ struct maybe_initial_capacity_t {};
227
275
 
228
276
  template <class T>
229
277
  struct vector_value_traits_base
230
278
  {
231
- static const bool trivial_dctr = dtl::is_trivially_destructible<T>::value;
232
- static const bool trivial_dctr_after_move = has_trivial_destructor_after_move<T>::value;
233
- static const bool trivial_copy = dtl::is_trivially_copy_constructible<T>::value;
234
- static const bool nothrow_copy = dtl::is_nothrow_copy_constructible<T>::value || trivial_copy;
235
- static const bool trivial_assign = dtl::is_trivially_copy_assignable<T>::value;
236
- static const bool nothrow_assign = dtl::is_nothrow_copy_assignable<T>::value || trivial_assign;
279
+ BOOST_STATIC_CONSTEXPR bool trivial_dctr = dtl::is_trivially_destructible<T>::value;
280
+ BOOST_STATIC_CONSTEXPR bool trivial_dctr_after_move = has_trivial_destructor_after_move<T>::value;
237
281
  };
238
282
 
239
-
240
283
  template <class Allocator>
241
284
  struct vector_value_traits
242
285
  : public vector_value_traits_base<typename Allocator::value_type>
@@ -265,116 +308,103 @@ struct vector_alloc_holder
265
308
  BOOST_MOVABLE_BUT_NOT_COPYABLE(vector_alloc_holder)
266
309
 
267
310
  public:
268
- typedef Allocator allocator_type;
269
- typedef StoredSizeType stored_size_type;
270
- typedef boost::container::allocator_traits<Allocator> allocator_traits_type;
271
- typedef typename allocator_traits_type::pointer pointer;
272
- typedef typename allocator_traits_type::size_type size_type;
273
- typedef typename allocator_traits_type::value_type value_type;
311
+ typedef Allocator allocator_type;
312
+ typedef StoredSizeType stored_size_type;
313
+ typedef boost::container::allocator_traits<allocator_type> allocator_traits_type;
314
+ typedef typename allocator_traits_type::pointer pointer;
315
+ typedef typename allocator_traits_type::size_type size_type;
316
+ typedef typename allocator_traits_type::value_type value_type;
317
+
318
+
319
+ private:
320
+
321
+ template<class SizeType>
322
+ void do_initial_capacity(SizeType initial_capacity)
323
+ {
324
+ if (BOOST_UNLIKELY(initial_capacity > size_type(-1))) {
325
+ boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
326
+ }
327
+ else if (initial_capacity) {
328
+ pointer reuse = pointer();
329
+ size_type final_cap = static_cast<size_type>(initial_capacity);
330
+ m_start = this->allocation_command(allocate_new, final_cap, final_cap, reuse);
331
+ this->set_stored_capacity(final_cap);
332
+ }
333
+ }
334
+
335
+ template<class SizeType>
336
+ void do_maybe_initial_capacity(pointer p, SizeType initial_capacity)
337
+ {
338
+ if (BOOST_UNLIKELY(initial_capacity > size_type(-1))) {
339
+ boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
340
+ }
341
+ else if (p) {
342
+ m_start = p;
343
+ }
344
+ else {
345
+ BOOST_ASSERT(initial_capacity > 0);
346
+ pointer reuse = pointer();
347
+ size_type final_cap = static_cast<size_type>(initial_capacity);
348
+ m_start = this->allocation_command(allocate_new, final_cap, final_cap, reuse);
349
+ this->set_stored_capacity(final_cap);
350
+ }
351
+ }
352
+
353
+ public:
274
354
 
275
- static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc, bool const propagate_allocator)
355
+ template <bool PropagateAllocator>
356
+ inline static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc)
276
357
  {
277
- (void)propagate_allocator; (void)p; (void)to_alloc; (void)from_alloc;
358
+ (void)p; (void)to_alloc; (void)from_alloc;
278
359
  const bool all_storage_propagable = !allocator_traits_type::is_partially_propagable::value ||
279
360
  !allocator_traits_type::storage_is_unpropagable(from_alloc, p);
280
- return all_storage_propagable && (propagate_allocator || allocator_traits_type::equal(from_alloc, to_alloc));
361
+ return all_storage_propagable &&
362
+ (PropagateAllocator || allocator_traits_type::is_always_equal::value || allocator_traits_type::equal(from_alloc, to_alloc));
281
363
  }
282
364
 
283
- static bool are_swap_propagable(const allocator_type &l_a, pointer l_p, const allocator_type &r_a, pointer r_p, bool const propagate_allocator)
365
+ template <bool PropagateAllocator>
366
+ inline static bool are_swap_propagable(const allocator_type &l_a, pointer l_p, const allocator_type &r_a, pointer r_p)
284
367
  {
285
- (void)propagate_allocator; (void)l_p; (void)r_p; (void)l_a; (void)r_a;
368
+ (void)l_p; (void)r_p; (void)l_a; (void)r_a;
286
369
  const bool all_storage_propagable = !allocator_traits_type::is_partially_propagable::value ||
287
370
  !(allocator_traits_type::storage_is_unpropagable(l_a, l_p) || allocator_traits_type::storage_is_unpropagable(r_a, r_p));
288
- return all_storage_propagable && (propagate_allocator || allocator_traits_type::equal(l_a, r_a));
371
+ return all_storage_propagable && (PropagateAllocator || allocator_traits_type::is_always_equal::value || allocator_traits_type::equal(l_a, r_a));
289
372
  }
290
373
 
291
374
  //Constructor, does not throw
292
375
  vector_alloc_holder()
293
- BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<Allocator>::value)
294
- : Allocator(), m_start(), m_size(), m_capacity()
376
+ BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<allocator_type>::value)
377
+ : allocator_type(), m_start(), m_size(), m_capacity()
295
378
  {}
296
379
 
297
380
  //Constructor, does not throw
298
381
  template<class AllocConvertible>
299
382
  explicit vector_alloc_holder(BOOST_FWD_REF(AllocConvertible) a) BOOST_NOEXCEPT_OR_NOTHROW
300
- : Allocator(boost::forward<AllocConvertible>(a)), m_start(), m_size(), m_capacity()
383
+ : allocator_type(boost::forward<AllocConvertible>(a)), m_start(), m_size(), m_capacity()
301
384
  {}
302
385
 
303
- //Constructor, does not throw
304
- template<class AllocConvertible>
305
- vector_alloc_holder(vector_uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, size_type initial_size)
306
- : Allocator(boost::forward<AllocConvertible>(a))
386
+
387
+ template<class AllocConvertible, class SizeType>
388
+ vector_alloc_holder(vector_uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, SizeType initial_size)
389
+ : allocator_type(boost::forward<AllocConvertible>(a))
307
390
  , m_start()
308
391
  //Size is initialized here so vector should only call uninitialized_xxx after this
309
392
  , m_size(static_cast<stored_size_type>(initial_size))
310
393
  , m_capacity()
311
- {
312
- if(initial_size){
313
- pointer reuse = pointer();
314
- size_type final_cap = initial_size;
315
- m_start = this->allocation_command(allocate_new, initial_size, final_cap, reuse);
316
- m_capacity = static_cast<stored_size_type>(final_cap);
317
- }
318
- }
394
+ { this->do_initial_capacity(initial_size); }
319
395
 
320
- //Constructor, does not throw
321
- vector_alloc_holder(vector_uninitialized_size_t, size_type initial_size)
322
- : Allocator()
396
+ template<class SizeType>
397
+ vector_alloc_holder(vector_uninitialized_size_t, SizeType initial_size)
398
+ : allocator_type()
323
399
  , m_start()
324
400
  //Size is initialized here so vector should only call uninitialized_xxx after this
325
401
  , m_size(static_cast<stored_size_type>(initial_size))
326
402
  , m_capacity()
327
- {
328
- if(initial_size){
329
- pointer reuse = pointer();
330
- size_type final_cap = initial_size;
331
- m_start = this->allocation_command(allocate_new, initial_size, final_cap, reuse);
332
- m_capacity = static_cast<stored_size_type>(final_cap);
333
- }
334
- }
335
-
336
- vector_alloc_holder(BOOST_RV_REF(vector_alloc_holder) holder) BOOST_NOEXCEPT_OR_NOTHROW
337
- : Allocator(BOOST_MOVE_BASE(Allocator, holder))
338
- , m_start(holder.m_start)
339
- , m_size(holder.m_size)
340
- , m_capacity(holder.m_capacity)
341
- {
342
- holder.m_start = pointer();
343
- holder.m_size = holder.m_capacity = 0;
344
- }
345
-
346
- vector_alloc_holder(initial_capacity_t, pointer p, size_type capacity, BOOST_RV_REF(vector_alloc_holder) holder)
347
- : Allocator(BOOST_MOVE_BASE(Allocator, holder))
348
- , m_start(p)
349
- , m_size(holder.m_size)
350
- , m_capacity(static_cast<stored_size_type>(capacity))
351
- {
352
- allocator_type &this_alloc = this->alloc();
353
- allocator_type &x_alloc = holder.alloc();
354
- if(this->is_propagable_from(x_alloc, holder.start(), this_alloc, true)){
355
- if(this->m_capacity){
356
- this->deallocate(this->m_start, this->m_capacity);
357
- }
358
- m_start = holder.m_start;
359
- m_capacity = holder.m_capacity;
360
- holder.m_start = pointer();
361
- holder.m_capacity = holder.m_size = 0;
362
- }
363
- else if(this->m_capacity < holder.m_size){
364
- size_type const n = holder.m_size;
365
- pointer reuse = pointer();
366
- size_type final_cap = n;
367
- m_start = this->allocation_command(allocate_new, n, final_cap, reuse);
368
- m_capacity = static_cast<stored_size_type>(final_cap);
369
- #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
370
- this->num_alloc += n != 0;
371
- #endif
372
- }
373
- }
403
+ { this->do_initial_capacity(initial_size); }
374
404
 
375
405
  vector_alloc_holder(initial_capacity_t, pointer p, size_type n)
376
- BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<Allocator>::value)
377
- : Allocator()
406
+ BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<allocator_type>::value)
407
+ : allocator_type()
378
408
  , m_start(p)
379
409
  , m_size()
380
410
  //n is guaranteed to fit into stored_size_type
@@ -383,37 +413,77 @@ struct vector_alloc_holder
383
413
 
384
414
  template<class AllocFwd>
385
415
  vector_alloc_holder(initial_capacity_t, pointer p, size_type n, BOOST_FWD_REF(AllocFwd) a)
386
- : Allocator(::boost::forward<AllocFwd>(a))
416
+ : allocator_type(::boost::forward<AllocFwd>(a))
387
417
  , m_start(p)
388
418
  , m_size()
389
419
  , m_capacity(n)
390
420
  {}
391
421
 
392
- BOOST_CONTAINER_FORCEINLINE ~vector_alloc_holder() BOOST_NOEXCEPT_OR_NOTHROW
422
+ template<class AllocConvertible, class SizeType>
423
+ vector_alloc_holder(maybe_initial_capacity_t, pointer p, SizeType initial_capacity, BOOST_FWD_REF(AllocConvertible) a)
424
+ : allocator_type(boost::forward<AllocConvertible>(a))
425
+ //, m_start()
426
+ //Size is initialized here so vector should only call uninitialized_xxx after this
427
+ , m_size()
428
+ , m_capacity(static_cast<stored_size_type>(initial_capacity))
429
+ { this->do_maybe_initial_capacity(p, initial_capacity); }
430
+
431
+ template<class SizeType>
432
+ vector_alloc_holder(maybe_initial_capacity_t, pointer p, SizeType initial_capacity)
433
+ : allocator_type()
434
+ //, m_start()
435
+ //Size is initialized here so vector should only call uninitialized_xxx after this
436
+ , m_size()
437
+ , m_capacity(static_cast<stored_size_type>(initial_capacity))
438
+ { this->do_maybe_initial_capacity(p, initial_capacity); }
439
+
440
+ vector_alloc_holder(BOOST_RV_REF(vector_alloc_holder) holder) BOOST_NOEXCEPT_OR_NOTHROW
441
+ : allocator_type(BOOST_MOVE_BASE(allocator_type, holder))
442
+ , m_start(holder.m_start)
443
+ , m_size(holder.m_size)
444
+ , m_capacity(holder.m_capacity)
445
+ {
446
+ holder.m_start = pointer();
447
+ holder.m_size = holder.m_capacity = 0;
448
+ }
449
+
450
+ inline ~vector_alloc_holder() BOOST_NOEXCEPT_OR_NOTHROW
393
451
  {
394
452
  if(this->m_capacity){
395
453
  this->deallocate(this->m_start, this->m_capacity);
396
454
  }
397
455
  }
398
456
 
399
- BOOST_CONTAINER_FORCEINLINE pointer allocation_command(boost::container::allocation_type command,
400
- size_type limit_size, size_type &prefer_in_recvd_out_size, pointer &reuse)
457
+ inline void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
458
+ { this->m_size = static_cast<stored_size_type>(s); }
459
+
460
+ inline void dec_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
461
+ { this->m_size = static_cast<stored_size_type>(this->m_size - s); }
462
+
463
+ inline void inc_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
464
+ { this->m_size = static_cast<stored_size_type>(this->m_size + s); }
465
+
466
+ inline void set_stored_capacity(size_type c) BOOST_NOEXCEPT_OR_NOTHROW
467
+ { this->m_capacity = static_cast<stored_size_type>(c); }
468
+
469
+ inline pointer allocation_command(boost::container::allocation_type command,
470
+ size_type limit_size, size_type &prefer_in_recvd_out_size, pointer &reuse)
401
471
  {
402
- typedef typename dtl::version<Allocator>::type alloc_version;
472
+ typedef typename dtl::version<allocator_type>::type alloc_version;
403
473
  return this->priv_allocation_command(alloc_version(), command, limit_size, prefer_in_recvd_out_size, reuse);
404
474
  }
405
475
 
406
- BOOST_CONTAINER_FORCEINLINE pointer allocate(size_type n)
476
+ inline pointer allocate(size_type n)
407
477
  {
408
478
  const size_type max_alloc = allocator_traits_type::max_size(this->alloc());
409
479
  const size_type max = max_alloc <= stored_size_type(-1) ? max_alloc : stored_size_type(-1);
410
- if ( max < n )
480
+ if (BOOST_UNLIKELY(max < n) )
411
481
  boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
412
482
 
413
483
  return allocator_traits_type::allocate(this->alloc(), n);
414
484
  }
415
485
 
416
- BOOST_CONTAINER_FORCEINLINE void deallocate(const pointer &p, size_type n)
486
+ inline void deallocate(const pointer &p, size_type n)
417
487
  {
418
488
  allocator_traits_type::deallocate(this->alloc(), p, n);
419
489
  }
@@ -421,7 +491,7 @@ struct vector_alloc_holder
421
491
  bool try_expand_fwd(size_type at_least)
422
492
  {
423
493
  //There is not enough memory, try to expand the old one
424
- const size_type new_cap = this->capacity() + at_least;
494
+ const size_type new_cap = size_type(this->capacity() + at_least);
425
495
  size_type real_cap = new_cap;
426
496
  pointer reuse = this->start();
427
497
  bool const success = !!this->allocation_command(expand_fwd, new_cap, real_cap, reuse);
@@ -440,9 +510,9 @@ struct vector_alloc_holder
440
510
  {
441
511
  BOOST_ASSERT(additional_objects > size_type(this->m_capacity - this->m_size));
442
512
  size_type max = allocator_traits_type::max_size(this->alloc());
443
- (clamp_by_stored_size_type)(max, stored_size_type());
444
- const size_type remaining_cap = max - size_type(this->m_capacity);
445
- const size_type min_additional_cap = additional_objects - size_type(this->m_capacity - this->m_size);
513
+ (clamp_by_stored_size_type<size_type>)(max, stored_size_type());
514
+ const size_type remaining_cap = size_type(max - size_type(this->m_capacity));
515
+ const size_type min_additional_cap = size_type(additional_objects - size_type(this->m_capacity - this->m_size));
446
516
 
447
517
  if ( remaining_cap < min_additional_cap )
448
518
  boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
@@ -470,20 +540,23 @@ struct vector_alloc_holder
470
540
  x.m_size = x.m_capacity = 0;
471
541
  }
472
542
 
473
- BOOST_CONTAINER_FORCEINLINE Allocator &alloc() BOOST_NOEXCEPT_OR_NOTHROW
543
+ inline allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW
474
544
  { return *this; }
475
545
 
476
- BOOST_CONTAINER_FORCEINLINE const Allocator &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
546
+ inline const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
477
547
  { return *this; }
478
548
 
479
- BOOST_CONTAINER_FORCEINLINE const pointer &start() const BOOST_NOEXCEPT_OR_NOTHROW
549
+ inline pointer start() const BOOST_NOEXCEPT_OR_NOTHROW
480
550
  { return m_start; }
481
- BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
551
+ inline size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
482
552
  { return m_capacity; }
483
- BOOST_CONTAINER_FORCEINLINE void start(const pointer &p) BOOST_NOEXCEPT_OR_NOTHROW
553
+ inline void start(const pointer &p) BOOST_NOEXCEPT_OR_NOTHROW
484
554
  { m_start = p; }
485
- BOOST_CONTAINER_FORCEINLINE void capacity(const size_type &c) BOOST_NOEXCEPT_OR_NOTHROW
486
- { BOOST_ASSERT( c <= stored_size_type(-1)); m_capacity = c; }
555
+ inline void capacity(const size_type &c) BOOST_NOEXCEPT_OR_NOTHROW
556
+ { BOOST_ASSERT( c <= stored_size_type(-1)); this->set_stored_capacity(c); }
557
+
558
+ static inline void on_capacity_overflow()
559
+ { }
487
560
 
488
561
  private:
489
562
  void priv_first_allocation(size_type cap)
@@ -498,17 +571,7 @@ struct vector_alloc_holder
498
571
  }
499
572
  }
500
573
 
501
- BOOST_CONTAINER_FORCEINLINE static void clamp_by_stored_size_type(size_type &, size_type)
502
- {}
503
-
504
- template<class SomeStoredSizeType>
505
- BOOST_CONTAINER_FORCEINLINE static void clamp_by_stored_size_type(size_type &s, SomeStoredSizeType)
506
- {
507
- if (s >= SomeStoredSizeType(-1) )
508
- s = SomeStoredSizeType(-1);
509
- }
510
-
511
- BOOST_CONTAINER_FORCEINLINE pointer priv_allocation_command(version_1, boost::container::allocation_type command,
574
+ pointer priv_allocation_command(version_1, boost::container::allocation_type command,
512
575
  size_type limit_size,
513
576
  size_type &prefer_in_recvd_out_size,
514
577
  pointer &reuse)
@@ -517,10 +580,10 @@ struct vector_alloc_holder
517
580
  BOOST_ASSERT( (command & allocate_new));
518
581
  BOOST_ASSERT(!(command & nothrow_allocation));
519
582
  //First detect overflow on smaller stored_size_types
520
- if (limit_size > stored_size_type(-1)){
583
+ if (BOOST_UNLIKELY(limit_size > stored_size_type(-1))){
521
584
  boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
522
585
  }
523
- (clamp_by_stored_size_type)(prefer_in_recvd_out_size, stored_size_type());
586
+ (clamp_by_stored_size_type<size_type>)(prefer_in_recvd_out_size, stored_size_type());
524
587
  pointer const p = this->allocate(prefer_in_recvd_out_size);
525
588
  reuse = pointer();
526
589
  return p;
@@ -532,14 +595,14 @@ struct vector_alloc_holder
532
595
  pointer &reuse)
533
596
  {
534
597
  //First detect overflow on smaller stored_size_types
535
- if (limit_size > stored_size_type(-1)){
598
+ if (BOOST_UNLIKELY(limit_size > stored_size_type(-1))){
536
599
  boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
537
600
  }
538
- (clamp_by_stored_size_type)(prefer_in_recvd_out_size, stored_size_type());
601
+ (clamp_by_stored_size_type<size_type>)(prefer_in_recvd_out_size, stored_size_type());
539
602
  //Allocate memory
540
603
  pointer p = this->alloc().allocation_command(command, limit_size, prefer_in_recvd_out_size, reuse);
541
604
  //If after allocation prefer_in_recvd_out_size is not representable by stored_size_type, truncate it.
542
- (clamp_by_stored_size_type)(prefer_in_recvd_out_size, stored_size_type());
605
+ (clamp_by_stored_size_type<size_type>)(prefer_in_recvd_out_size, stored_size_type());
543
606
  return p;
544
607
  }
545
608
  };
@@ -553,31 +616,33 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
553
616
  BOOST_MOVABLE_BUT_NOT_COPYABLE(vector_alloc_holder)
554
617
 
555
618
  public:
556
- typedef boost::container::allocator_traits<Allocator> allocator_traits_type;
619
+ typedef Allocator allocator_type;
620
+ typedef boost::container::
621
+ allocator_traits<allocator_type> allocator_traits_type;
557
622
  typedef typename allocator_traits_type::pointer pointer;
558
623
  typedef typename allocator_traits_type::size_type size_type;
559
624
  typedef typename allocator_traits_type::value_type value_type;
560
625
  typedef StoredSizeType stored_size_type;
561
-
626
+
562
627
  template <class OtherAllocator, class OtherStoredSizeType, class OtherAllocatorVersion>
563
628
  friend struct vector_alloc_holder;
564
629
 
565
630
  //Constructor, does not throw
566
631
  vector_alloc_holder()
567
- BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<Allocator>::value)
568
- : Allocator(), m_size()
632
+ BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<allocator_type>::value)
633
+ : allocator_type(), m_size()
569
634
  {}
570
635
 
571
636
  //Constructor, does not throw
572
637
  template<class AllocConvertible>
573
638
  explicit vector_alloc_holder(BOOST_FWD_REF(AllocConvertible) a) BOOST_NOEXCEPT_OR_NOTHROW
574
- : Allocator(boost::forward<AllocConvertible>(a)), m_size()
639
+ : allocator_type(boost::forward<AllocConvertible>(a)), m_size()
575
640
  {}
576
641
 
577
642
  //Constructor, does not throw
578
643
  template<class AllocConvertible>
579
644
  vector_alloc_holder(vector_uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, size_type initial_size)
580
- : Allocator(boost::forward<AllocConvertible>(a))
645
+ : allocator_type(boost::forward<AllocConvertible>(a))
581
646
  , m_size(initial_size) //Size is initialized here...
582
647
  {
583
648
  //... and capacity here, so vector, must call uninitialized_xxx in the derived constructor
@@ -586,7 +651,7 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
586
651
 
587
652
  //Constructor, does not throw
588
653
  vector_alloc_holder(vector_uninitialized_size_t, size_type initial_size)
589
- : Allocator()
654
+ : allocator_type()
590
655
  , m_size(initial_size) //Size is initialized here...
591
656
  {
592
657
  //... and capacity here, so vector, must call uninitialized_xxx in the derived constructor
@@ -594,16 +659,19 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
594
659
  }
595
660
 
596
661
  vector_alloc_holder(BOOST_RV_REF(vector_alloc_holder) holder)
597
- : Allocator(BOOST_MOVE_BASE(Allocator, holder))
662
+ : allocator_type(BOOST_MOVE_BASE(allocator_type, holder))
598
663
  , m_size(holder.m_size) //Size is initialized here so vector should only call uninitialized_xxx after this
599
664
  {
600
665
  ::boost::container::uninitialized_move_alloc_n
601
666
  (this->alloc(), boost::movelib::to_raw_pointer(holder.start()), m_size, boost::movelib::to_raw_pointer(this->start()));
667
+ ::boost::container::destroy_alloc_n
668
+ (this->alloc(), boost::movelib::to_raw_pointer(holder.start()), m_size);
669
+ holder.m_size = 0;
602
670
  }
603
671
 
604
672
  template<class OtherAllocator, class OtherStoredSizeType, class OtherAllocatorVersion>
605
673
  vector_alloc_holder(BOOST_RV_REF_BEG vector_alloc_holder<OtherAllocator, OtherStoredSizeType, OtherAllocatorVersion> BOOST_RV_REF_END holder)
606
- : Allocator()
674
+ : allocator_type()
607
675
  , m_size(holder.m_size) //Initialize it to m_size as first_allocation can only succeed or abort
608
676
  {
609
677
  //Different allocator type so we must check we have enough storage
@@ -613,49 +681,63 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
613
681
  (this->alloc(), boost::movelib::to_raw_pointer(holder.start()), n, boost::movelib::to_raw_pointer(this->start()));
614
682
  }
615
683
 
616
- BOOST_CONTAINER_FORCEINLINE void priv_first_allocation(size_type cap)
684
+ static inline void on_capacity_overflow()
685
+ { allocator_type::on_capacity_overflow(); }
686
+
687
+ inline void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
688
+ { this->m_size = static_cast<stored_size_type>(s); }
689
+
690
+ inline void dec_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
691
+ { this->m_size = static_cast<stored_size_type>(this->m_size - s); }
692
+
693
+ inline void inc_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
694
+ { this->m_size = static_cast<stored_size_type>(this->m_size + s); }
695
+
696
+ inline void priv_first_allocation(size_type cap)
617
697
  {
618
- if(cap > Allocator::internal_capacity){
619
- throw_bad_alloc();
698
+ if(cap > allocator_type::internal_capacity){
699
+ on_capacity_overflow();
620
700
  }
621
701
  }
622
702
 
623
- BOOST_CONTAINER_FORCEINLINE void deep_swap(vector_alloc_holder &x)
624
- {
625
- this->priv_deep_swap(x);
626
- }
703
+ inline void deep_swap(vector_alloc_holder &x)
704
+ { this->priv_deep_swap(x); }
627
705
 
628
706
  template<class OtherAllocator, class OtherStoredSizeType, class OtherAllocatorVersion>
629
707
  void deep_swap(vector_alloc_holder<OtherAllocator, OtherStoredSizeType, OtherAllocatorVersion> &x)
630
708
  {
631
- if(this->m_size > OtherAllocator::internal_capacity || x.m_size > Allocator::internal_capacity){
632
- throw_bad_alloc();
709
+ typedef typename real_allocator<value_type, OtherAllocator>::type other_allocator_type;
710
+ if(this->m_size > other_allocator_type::internal_capacity || x.m_size > allocator_type::internal_capacity){
711
+ on_capacity_overflow();
633
712
  }
634
713
  this->priv_deep_swap(x);
635
714
  }
636
715
 
637
- BOOST_CONTAINER_FORCEINLINE void swap_resources(vector_alloc_holder &) BOOST_NOEXCEPT_OR_NOTHROW
716
+ inline void swap_resources(vector_alloc_holder &) BOOST_NOEXCEPT_OR_NOTHROW
638
717
  { //Containers with version 0 allocators can't be moved without moving elements one by one
639
- throw_bad_alloc();
718
+ on_capacity_overflow();
640
719
  }
641
720
 
642
-
643
- BOOST_CONTAINER_FORCEINLINE void steal_resources(vector_alloc_holder &)
721
+ inline void steal_resources(vector_alloc_holder &)
644
722
  { //Containers with version 0 allocators can't be moved without moving elements one by one
645
- throw_bad_alloc();
723
+ on_capacity_overflow();
646
724
  }
647
725
 
648
- BOOST_CONTAINER_FORCEINLINE Allocator &alloc() BOOST_NOEXCEPT_OR_NOTHROW
726
+ inline allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW
649
727
  { return *this; }
650
728
 
651
- BOOST_CONTAINER_FORCEINLINE const Allocator &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
729
+ inline const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
652
730
  { return *this; }
653
731
 
654
- BOOST_CONTAINER_FORCEINLINE bool try_expand_fwd(size_type at_least)
732
+ inline bool try_expand_fwd(size_type at_least)
655
733
  { return !at_least; }
656
734
 
657
- BOOST_CONTAINER_FORCEINLINE pointer start() const BOOST_NOEXCEPT_OR_NOTHROW { return Allocator::internal_storage(); }
658
- BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW { return Allocator::internal_capacity; }
735
+ inline pointer start() const BOOST_NOEXCEPT_OR_NOTHROW
736
+ { return allocator_type::internal_storage(); }
737
+
738
+ inline size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
739
+ { return allocator_type::internal_capacity; }
740
+
659
741
  stored_size_type m_size;
660
742
 
661
743
  private:
@@ -663,7 +745,7 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
663
745
  template<class OtherAllocator, class OtherStoredSizeType, class OtherAllocatorVersion>
664
746
  void priv_deep_swap(vector_alloc_holder<OtherAllocator, OtherStoredSizeType, OtherAllocatorVersion> &x)
665
747
  {
666
- const size_type MaxTmpStorage = sizeof(value_type)*Allocator::internal_capacity;
748
+ const size_type MaxTmpStorage = sizeof(value_type)*allocator_type::internal_capacity;
667
749
  value_type *const first_this = boost::movelib::to_raw_pointer(this->start());
668
750
  value_type *const first_x = boost::movelib::to_raw_pointer(x.start());
669
751
 
@@ -678,18 +760,7 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
678
760
  };
679
761
 
680
762
  struct growth_factor_60;
681
-
682
- template<class T, class Default>
683
- struct default_if_void
684
- {
685
- typedef T type;
686
- };
687
-
688
- template<class Default>
689
- struct default_if_void<void, Default>
690
- {
691
- typedef Default type;
692
- };
763
+ struct growth_factor_100;
693
764
 
694
765
  template<class Options, class AllocatorSizeType>
695
766
  struct get_vector_opt
@@ -705,7 +776,6 @@ struct get_vector_opt<void, AllocatorSizeType>
705
776
  typedef vector_opt<growth_factor_60, AllocatorSizeType> type;
706
777
  };
707
778
 
708
-
709
779
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
710
780
 
711
781
  //! A vector is a sequence that supports random access to elements, constant
@@ -714,84 +784,138 @@ struct get_vector_opt<void, AllocatorSizeType>
714
784
  //! elements in a vector may vary dynamically; memory management is automatic.
715
785
  //!
716
786
  //! \tparam T The type of object that is stored in the vector
717
- //! \tparam Allocator The allocator used for all internal memory management
787
+ //! \tparam A The allocator used for all internal memory management, use void
788
+ //! for the default allocator
718
789
  //! \tparam Options A type produced from \c boost::container::vector_options.
719
- template <class T, class Allocator BOOST_CONTAINER_DOCONLY(= new_allocator<T>), class Options BOOST_CONTAINER_DOCONLY(= void) >
790
+ template <class T, class A BOOST_CONTAINER_DOCONLY(= void), class Options BOOST_CONTAINER_DOCONLY(= void) >
720
791
  class vector
721
792
  {
722
- #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
793
+ public:
794
+ //////////////////////////////////////////////
795
+ //
796
+ // types
797
+ //
798
+ //////////////////////////////////////////////
799
+ typedef T value_type;
800
+ typedef BOOST_CONTAINER_IMPDEF
801
+ (typename real_allocator<T BOOST_MOVE_I A>::type) allocator_type;
802
+ typedef ::boost::container::allocator_traits<allocator_type> allocator_traits_t;
803
+ typedef typename allocator_traits<allocator_type>::pointer pointer;
804
+ typedef typename allocator_traits<allocator_type>::const_pointer const_pointer;
805
+ typedef typename allocator_traits<allocator_type>::reference reference;
806
+ typedef typename allocator_traits<allocator_type>::const_reference const_reference;
807
+ typedef typename allocator_traits<allocator_type>::size_type size_type;
808
+ typedef typename allocator_traits<allocator_type>::difference_type difference_type;
809
+ typedef allocator_type stored_allocator_type;
810
+ typedef BOOST_CONTAINER_IMPDEF(vec_iterator<pointer BOOST_MOVE_I false>) iterator;
811
+ typedef BOOST_CONTAINER_IMPDEF(vec_iterator<pointer BOOST_MOVE_I true >) const_iterator;
812
+ typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<iterator>) reverse_iterator;
813
+ typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<const_iterator>) const_reverse_iterator;
814
+
815
+ private:
723
816
 
724
- typedef typename boost::container::allocator_traits<Allocator>::size_type alloc_size_type;
817
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
818
+ typedef typename boost::container::
819
+ allocator_traits<allocator_type>::size_type alloc_size_type;
725
820
  typedef typename get_vector_opt<Options, alloc_size_type>::type options_type;
726
821
  typedef typename options_type::growth_factor_type growth_factor_type;
727
822
  typedef typename options_type::stored_size_type stored_size_type;
728
823
  typedef value_less<T> value_less_t;
729
824
 
730
825
  //If provided the stored_size option must specify a type that is equal or a type that is smaller.
731
- BOOST_STATIC_ASSERT( (sizeof(stored_size_type) < sizeof(alloc_size_type) ||
826
+ BOOST_CONTAINER_STATIC_ASSERT( (sizeof(stored_size_type) < sizeof(alloc_size_type) ||
732
827
  dtl::is_same<stored_size_type, alloc_size_type>::value) );
733
828
 
734
- typedef typename dtl::version<Allocator>::type alloc_version;
735
- typedef boost::container::vector_alloc_holder<Allocator, stored_size_type> alloc_holder_t;
829
+ typedef typename dtl::version<allocator_type>::type alloc_version;
830
+ typedef boost::container::vector_alloc_holder
831
+ <allocator_type, stored_size_type> alloc_holder_t;
832
+
736
833
  alloc_holder_t m_holder;
737
- typedef allocator_traits<Allocator> allocator_traits_type;
738
- template <class U, class UAllocator, class UOptions>
834
+
835
+ typedef allocator_traits<allocator_type> allocator_traits_type;
836
+ template <class U, class UA, class UOptions>
739
837
  friend class vector;
740
838
 
741
- typedef typename allocator_traits_type::pointer pointer_impl;
742
- typedef vec_iterator<pointer_impl, false> iterator_impl;
743
- typedef vec_iterator<pointer_impl, true > const_iterator_impl;
744
839
 
745
840
  protected:
746
- static bool is_propagable_from(const Allocator &from_alloc, pointer_impl p, const Allocator &to_alloc, bool const propagate_allocator)
747
- { return alloc_holder_t::is_propagable_from(from_alloc, p, to_alloc, propagate_allocator); }
841
+ template <bool PropagateAllocator>
842
+ inline static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc)
843
+ { return alloc_holder_t::template is_propagable_from<PropagateAllocator>(from_alloc, p, to_alloc); }
748
844
 
749
- static bool are_swap_propagable( const Allocator &l_a, pointer_impl l_p
750
- , const Allocator &r_a, pointer_impl r_p, bool const propagate_allocator)
751
- { return alloc_holder_t::are_swap_propagable(l_a, l_p, r_a, r_p, propagate_allocator); }
845
+ template <bool PropagateAllocator>
846
+ inline static bool are_swap_propagable( const allocator_type &l_a, pointer l_p
847
+ , const allocator_type &r_a, pointer r_p)
848
+ { return alloc_holder_t::template are_swap_propagable<PropagateAllocator>(l_a, l_p, r_a, r_p); }
752
849
 
753
850
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
754
- public:
755
- //////////////////////////////////////////////
756
- //
757
- // types
758
- //
759
- //////////////////////////////////////////////
760
-
761
- typedef T value_type;
762
- typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
763
- typedef typename ::boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
764
- typedef typename ::boost::container::allocator_traits<Allocator>::reference reference;
765
- typedef typename ::boost::container::allocator_traits<Allocator>::const_reference const_reference;
766
- typedef typename ::boost::container::allocator_traits<Allocator>::size_type size_type;
767
- typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
768
- typedef Allocator allocator_type;
769
- typedef Allocator stored_allocator_type;
770
- typedef BOOST_CONTAINER_IMPDEF(iterator_impl) iterator;
771
- typedef BOOST_CONTAINER_IMPDEF(const_iterator_impl) const_iterator;
772
- typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<iterator>) reverse_iterator;
773
- typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<const_iterator>) const_reverse_iterator;
774
-
775
851
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
776
852
  private:
777
853
  BOOST_COPYABLE_AND_MOVABLE(vector)
778
- typedef vector_value_traits<Allocator> value_traits;
779
- typedef constant_iterator<T, difference_type> cvalue_iterator;
854
+ typedef vector_value_traits<allocator_type> value_traits;
855
+ typedef constant_iterator<T> cvalue_iterator;
780
856
 
781
857
  protected:
782
858
 
783
- BOOST_CONTAINER_FORCEINLINE void steal_resources(vector &x)
859
+ inline void steal_resources(vector &x)
784
860
  { return this->m_holder.steal_resources(x.m_holder); }
785
861
 
862
+ inline void protected_set_size(size_type n)
863
+ { this->m_holder.m_size = static_cast<stored_size_type>(n); }
864
+
786
865
  template<class AllocFwd>
787
- BOOST_CONTAINER_FORCEINLINE vector(initial_capacity_t, pointer initial_memory, size_type capacity, BOOST_FWD_REF(AllocFwd) a)
788
- : m_holder(initial_capacity_t(), initial_memory, capacity, ::boost::forward<AllocFwd>(a))
866
+ inline vector(initial_capacity_t, pointer initial_memory, size_type cap, BOOST_FWD_REF(AllocFwd) a)
867
+ : m_holder(initial_capacity_t(), initial_memory, cap, ::boost::forward<AllocFwd>(a))
789
868
  {}
790
869
 
791
- BOOST_CONTAINER_FORCEINLINE vector(initial_capacity_t, pointer initial_memory, size_type capacity)
792
- : m_holder(initial_capacity_t(), initial_memory, capacity)
870
+ template<class AllocFwd>
871
+ inline vector(initial_capacity_t, pointer initial_memory, size_type cap, BOOST_FWD_REF(AllocFwd) a, vector &x)
872
+ : m_holder(initial_capacity_t(), initial_memory, cap, ::boost::forward<AllocFwd>(a))
873
+ {
874
+ allocator_type &this_al = this->get_stored_allocator();
875
+ if (this->template is_propagable_from<true>(x.get_stored_allocator(), x.data(), this_al)) {
876
+ this->steal_resources(x);
877
+ }
878
+ else {
879
+ const size_type sz = x.size();
880
+ ::boost::container::uninitialized_move_alloc_n_source
881
+ ( this_al, x.priv_raw_begin(), sz
882
+ //Use launder to stop false positives from -Warray-bounds
883
+ , boost::move_detail::launder(this->priv_raw_begin()));
884
+ this->protected_set_size(sz);
885
+ x.clear();
886
+ }
887
+ }
888
+
889
+ inline vector(initial_capacity_t, pointer initial_memory, size_type cap)
890
+ : m_holder(initial_capacity_t(), initial_memory, cap)
793
891
  {}
794
892
 
893
+ template<class SizeType, class AllocFwd>
894
+ inline vector(maybe_initial_capacity_t, pointer p, SizeType initial_capacity, BOOST_FWD_REF(AllocFwd) a)
895
+ : m_holder(maybe_initial_capacity_t(), p, initial_capacity, ::boost::forward<AllocFwd>(a))
896
+ {
897
+ #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
898
+ this->num_alloc += size_type(p != pointer());
899
+ #endif
900
+ }
901
+
902
+ template<class SizeType>
903
+ inline vector(maybe_initial_capacity_t, pointer p, SizeType initial_capacity)
904
+ : m_holder(maybe_initial_capacity_t(), p, initial_capacity)
905
+ {
906
+ #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
907
+ this->num_alloc += size_type(p != pointer());
908
+ #endif
909
+ }
910
+
911
+ template <class U>
912
+ void protected_init_n(const size_type new_size, const U& u)
913
+ {
914
+ BOOST_ASSERT(this->empty());
915
+ this->priv_resize_proxy(u).uninitialized_copy_n_and_update(this->m_holder.alloc(), this->priv_raw_begin(), new_size);
916
+ this->m_holder.set_stored_size(new_size);
917
+ }
918
+
795
919
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
796
920
 
797
921
  public:
@@ -806,7 +930,7 @@ class vector
806
930
  //! <b>Throws</b>: Nothing.
807
931
  //!
808
932
  //! <b>Complexity</b>: Constant.
809
- vector() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<Allocator>::value)
933
+ vector() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<allocator_type>::value)
810
934
  : m_holder()
811
935
  {}
812
936
 
@@ -931,6 +1055,12 @@ class vector
931
1055
  //! throws or T's constructor taking a dereferenced InIt throws.
932
1056
  //!
933
1057
  //! <b>Complexity</b>: Linear to the range [first, last).
1058
+ // template <class InIt>
1059
+ // vector(InIt first, InIt last
1060
+ // BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_c
1061
+ // < dtl::is_convertible<InIt BOOST_MOVE_I size_type>::value
1062
+ // BOOST_MOVE_I dtl::nat >::type * = 0)
1063
+ // ) -> vector<typename iterator_traits<InIt>::value_type, new_allocator<typename iterator_traits<InIt>::value_type>>;
934
1064
  template <class InIt>
935
1065
  vector(InIt first, InIt last
936
1066
  BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_c
@@ -984,7 +1114,7 @@ class vector
984
1114
  //! <b>Complexity</b>: Constant.
985
1115
  vector(BOOST_RV_REF(vector) x) BOOST_NOEXCEPT_OR_NOTHROW
986
1116
  : m_holder(boost::move(x.m_holder))
987
- { BOOST_STATIC_ASSERT((!allocator_traits_type::is_partially_propagable::value)); }
1117
+ { BOOST_CONTAINER_STATIC_ASSERT((!allocator_traits_type::is_partially_propagable::value)); }
988
1118
 
989
1119
  #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
990
1120
  //! <b>Effects</b>: Constructs a vector that will use a copy of allocator a
@@ -994,9 +1124,14 @@ class vector
994
1124
  //!
995
1125
  //! <b>Complexity</b>: Linear to the range [il.begin(), il.end()).
996
1126
  vector(std::initializer_list<value_type> il, const allocator_type& a = allocator_type())
997
- : m_holder(a)
1127
+ : m_holder(vector_uninitialized_size, a, il.size())
998
1128
  {
999
- this->assign(il.begin(), il.end());
1129
+ #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
1130
+ this->num_alloc += il.size() != 0;
1131
+ #endif
1132
+ ::boost::container::uninitialized_copy_alloc_n_source
1133
+ ( this->m_holder.alloc(), il.begin()
1134
+ , static_cast<size_type>(il.size()), this->priv_raw_begin());
1000
1135
  }
1001
1136
  #endif
1002
1137
 
@@ -1009,15 +1144,15 @@ class vector
1009
1144
  //! <b>Complexity</b>: Linear.
1010
1145
  //!
1011
1146
  //! <b>Note</b>: Non-standard extension to support static_vector
1012
- template<class OtherAllocator>
1013
- vector(BOOST_RV_REF_BEG vector<T, OtherAllocator> BOOST_RV_REF_END x
1147
+ template<class OtherA>
1148
+ vector(BOOST_RV_REF_BEG vector<T, OtherA, Options> BOOST_RV_REF_END x
1014
1149
  , typename dtl::enable_if_c
1015
- < dtl::is_version<OtherAllocator, 0>::value>::type * = 0
1150
+ < dtl::is_version<typename real_allocator<T, OtherA>::type, 0>::value>::type * = 0
1016
1151
  )
1017
1152
  : m_holder(boost::move(x.m_holder))
1018
1153
  {}
1019
1154
 
1020
- #endif //!defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1155
+ #endif // defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1021
1156
 
1022
1157
  //! <b>Effects</b>: Copy constructs a vector using the specified allocator.
1023
1158
  //!
@@ -1047,10 +1182,12 @@ class vector
1047
1182
  //! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise.
1048
1183
  vector(BOOST_RV_REF(vector) x, const allocator_type &a)
1049
1184
  : m_holder( vector_uninitialized_size, a
1050
- , is_propagable_from(x.get_stored_allocator(), x.m_holder.start(), a, true) ? 0 : x.size()
1185
+ //In this allocator move constructor the allocator won't be propagated --v
1186
+ , is_propagable_from<false>(x.get_stored_allocator(), x.m_holder.start(), a) ? 0 : x.size()
1051
1187
  )
1052
1188
  {
1053
- if(is_propagable_from(x.get_stored_allocator(), x.m_holder.start(), a, true)){
1189
+ //In this allocator move constructor the allocator won't be propagated ---v
1190
+ if(is_propagable_from<false>(x.get_stored_allocator(), x.m_holder.start(), a)){
1054
1191
  this->m_holder.steal_resources(x.m_holder);
1055
1192
  }
1056
1193
  else{
@@ -1085,9 +1222,9 @@ class vector
1085
1222
  //! <b>Throws</b>: If memory allocation throws or T's copy/move constructor/assignment throws.
1086
1223
  //!
1087
1224
  //! <b>Complexity</b>: Linear to the number of elements in x.
1088
- BOOST_CONTAINER_FORCEINLINE vector& operator=(BOOST_COPY_ASSIGN_REF(vector) x)
1225
+ inline vector& operator=(BOOST_COPY_ASSIGN_REF(vector) x)
1089
1226
  {
1090
- if (&x != this){
1227
+ if (BOOST_LIKELY(&x != this)){
1091
1228
  this->priv_copy_assign(x);
1092
1229
  }
1093
1230
  return *this;
@@ -1097,7 +1234,7 @@ class vector
1097
1234
  //! <b>Effects</b>: Make *this container contains elements from il.
1098
1235
  //!
1099
1236
  //! <b>Complexity</b>: Linear to the range [il.begin(), il.end()).
1100
- BOOST_CONTAINER_FORCEINLINE vector& operator=(std::initializer_list<value_type> il)
1237
+ inline vector& operator=(std::initializer_list<value_type> il)
1101
1238
  {
1102
1239
  this->assign(il.begin(), il.end());
1103
1240
  return *this;
@@ -1115,12 +1252,13 @@ class vector
1115
1252
  //! <b>Complexity</b>: Constant if allocator_traits_type::
1116
1253
  //! propagate_on_container_move_assignment is true or
1117
1254
  //! this->get>allocator() == x.get_allocator(). Linear otherwise.
1118
- BOOST_CONTAINER_FORCEINLINE vector& operator=(BOOST_RV_REF(vector) x)
1255
+ inline vector& operator=(BOOST_RV_REF(vector) x)
1119
1256
  BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value
1120
1257
  || allocator_traits_type::is_always_equal::value)
1121
1258
  {
1122
- BOOST_ASSERT(&x != this);
1123
- this->priv_move_assign(boost::move(x));
1259
+ if (BOOST_LIKELY(&x != this)){
1260
+ this->priv_move_assign(boost::move(x));
1261
+ }
1124
1262
  return *this;
1125
1263
  }
1126
1264
 
@@ -1136,13 +1274,13 @@ class vector
1136
1274
  //! <b>Complexity</b>: Linear.
1137
1275
  //!
1138
1276
  //! <b>Note</b>: Non-standard extension to support static_vector
1139
- template<class OtherAllocator>
1140
- BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and
1277
+ template<class OtherA>
1278
+ inline typename dtl::enable_if_and
1141
1279
  < vector&
1142
- , dtl::is_version<OtherAllocator, 0>
1143
- , dtl::is_different<OtherAllocator, allocator_type>
1280
+ , dtl::is_version<typename real_allocator<T, OtherA>::type, 0>
1281
+ , dtl::is_different<typename real_allocator<T, OtherA>::type, allocator_type>
1144
1282
  >::type
1145
- operator=(BOOST_RV_REF_BEG vector<value_type, OtherAllocator> BOOST_RV_REF_END x)
1283
+ operator=(BOOST_RV_REF_BEG vector<value_type, OtherA, Options> BOOST_RV_REF_END x)
1146
1284
  {
1147
1285
  this->priv_move_assign(boost::move(x));
1148
1286
  return *this;
@@ -1158,13 +1296,13 @@ class vector
1158
1296
  //! <b>Complexity</b>: Linear.
1159
1297
  //!
1160
1298
  //! <b>Note</b>: Non-standard extension to support static_vector
1161
- template<class OtherAllocator>
1162
- BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and
1299
+ template<class OtherA>
1300
+ inline typename dtl::enable_if_and
1163
1301
  < vector&
1164
- , dtl::is_version<OtherAllocator, 0>
1165
- , dtl::is_different<OtherAllocator, allocator_type>
1302
+ , dtl::is_version<typename real_allocator<T, OtherA>::type, 0>
1303
+ , dtl::is_different<typename real_allocator<T, OtherA>::type, allocator_type>
1166
1304
  >::type
1167
- operator=(const vector<value_type, OtherAllocator> &x)
1305
+ operator=(const vector<value_type, OtherA, Options> &x)
1168
1306
  {
1169
1307
  this->priv_copy_assign(x);
1170
1308
  return *this;
@@ -1180,6 +1318,7 @@ class vector
1180
1318
  //! <b>Complexity</b>: Linear to n.
1181
1319
  template <class InIt>
1182
1320
  void assign(InIt first, InIt last
1321
+ //Input iterators or version 0 allocator
1183
1322
  BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_or
1184
1323
  < void
1185
1324
  BOOST_MOVE_I dtl::is_convertible<InIt BOOST_MOVE_I size_type>
@@ -1215,7 +1354,7 @@ class vector
1215
1354
  //! <b>Throws</b>: If memory allocation throws or
1216
1355
  //! T's constructor from dereferencing iniializer_list iterator throws.
1217
1356
  //!
1218
- BOOST_CONTAINER_FORCEINLINE void assign(std::initializer_list<T> il)
1357
+ inline void assign(std::initializer_list<T> il)
1219
1358
  {
1220
1359
  this->assign(il.begin(), il.end());
1221
1360
  }
@@ -1229,6 +1368,7 @@ class vector
1229
1368
  //! <b>Complexity</b>: Linear to n.
1230
1369
  template <class FwdIt>
1231
1370
  void assign(FwdIt first, FwdIt last
1371
+ //Forward iterators and version > 0 allocator
1232
1372
  BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_or
1233
1373
  < void
1234
1374
  BOOST_MOVE_I dtl::is_same<alloc_version BOOST_MOVE_I version_0>
@@ -1237,9 +1377,15 @@ class vector
1237
1377
  >::type * = 0)
1238
1378
  )
1239
1379
  {
1380
+ typedef typename iter_size<FwdIt>::type it_size_type;
1240
1381
  //For Fwd iterators the standard only requires EmplaceConstructible and assignable from *first
1241
1382
  //so we can't do any backwards allocation
1242
- const size_type input_sz = static_cast<size_type>(boost::container::iterator_distance(first, last));
1383
+ const it_size_type sz = boost::container::iterator_udistance(first, last);
1384
+ if (BOOST_UNLIKELY(sz > size_type(-1))){
1385
+ boost::container::throw_length_error("vector::assign, FwdIt's max length reached");
1386
+ }
1387
+
1388
+ const size_type input_sz = static_cast<size_type>(sz);
1243
1389
  const size_type old_capacity = this->capacity();
1244
1390
  if(input_sz > old_capacity){ //If input range is too big, we need to reallocate
1245
1391
  size_type real_cap = 0;
@@ -1268,21 +1414,9 @@ class vector
1268
1414
  //Forward expansion, use assignment + back deletion/construction that comes later
1269
1415
  }
1270
1416
  }
1271
- //Overwrite all elements we can from [first, last)
1272
- iterator cur = this->begin();
1273
- const iterator end_it = this->end();
1274
- for ( ; first != last && cur != end_it; ++cur, ++first){
1275
- *cur = *first;
1276
- }
1277
1417
 
1278
- if (first == last){
1279
- //There are no more elements in the sequence, erase remaining
1280
- this->priv_destroy_last_n(this->size() - input_sz);
1281
- }
1282
- else{
1283
- //Uninitialized construct at end the remaining range
1284
- this->priv_uninitialized_construct_at_end(first, last);
1285
- }
1418
+ boost::container::copy_assign_range_alloc_n(this->m_holder.alloc(), first, input_sz, this->priv_raw_begin(), this->size());
1419
+ m_holder.set_stored_size(input_sz);
1286
1420
  }
1287
1421
 
1288
1422
  //! <b>Effects</b>: Assigns the n copies of val to *this.
@@ -1291,7 +1425,7 @@ class vector
1291
1425
  //! T's copy/move constructor/assignment throws.
1292
1426
  //!
1293
1427
  //! <b>Complexity</b>: Linear to n.
1294
- BOOST_CONTAINER_FORCEINLINE void assign(size_type n, const value_type& val)
1428
+ inline void assign(size_type n, const value_type& val)
1295
1429
  { this->assign(cvalue_iterator(val, n), cvalue_iterator()); }
1296
1430
 
1297
1431
  //! <b>Effects</b>: Returns a copy of the internal allocator.
@@ -1299,7 +1433,7 @@ class vector
1299
1433
  //! <b>Throws</b>: If allocator's copy constructor throws.
1300
1434
  //!
1301
1435
  //! <b>Complexity</b>: Constant.
1302
- allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1436
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1303
1437
  { return this->m_holder.alloc(); }
1304
1438
 
1305
1439
  //! <b>Effects</b>: Returns a reference to the internal allocator.
@@ -1309,7 +1443,8 @@ class vector
1309
1443
  //! <b>Complexity</b>: Constant.
1310
1444
  //!
1311
1445
  //! <b>Note</b>: Non-standard extension.
1312
- BOOST_CONTAINER_FORCEINLINE stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
1446
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1447
+ stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
1313
1448
  { return this->m_holder.alloc(); }
1314
1449
 
1315
1450
  //! <b>Effects</b>: Returns a reference to the internal allocator.
@@ -1319,7 +1454,8 @@ class vector
1319
1454
  //! <b>Complexity</b>: Constant.
1320
1455
  //!
1321
1456
  //! <b>Note</b>: Non-standard extension.
1322
- BOOST_CONTAINER_FORCEINLINE const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1457
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1458
+ const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1323
1459
  { return this->m_holder.alloc(); }
1324
1460
 
1325
1461
  //////////////////////////////////////////////
@@ -1333,7 +1469,7 @@ class vector
1333
1469
  //! <b>Throws</b>: Nothing.
1334
1470
  //!
1335
1471
  //! <b>Complexity</b>: Constant.
1336
- BOOST_CONTAINER_FORCEINLINE iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
1472
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
1337
1473
  { return iterator(this->m_holder.start()); }
1338
1474
 
1339
1475
  //! <b>Effects</b>: Returns a const_iterator to the first element contained in the vector.
@@ -1341,7 +1477,7 @@ class vector
1341
1477
  //! <b>Throws</b>: Nothing.
1342
1478
  //!
1343
1479
  //! <b>Complexity</b>: Constant.
1344
- BOOST_CONTAINER_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
1480
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
1345
1481
  { return const_iterator(this->m_holder.start()); }
1346
1482
 
1347
1483
  //! <b>Effects</b>: Returns an iterator to the end of the vector.
@@ -1349,15 +1485,19 @@ class vector
1349
1485
  //! <b>Throws</b>: Nothing.
1350
1486
  //!
1351
1487
  //! <b>Complexity</b>: Constant.
1352
- BOOST_CONTAINER_FORCEINLINE iterator end() BOOST_NOEXCEPT_OR_NOTHROW
1353
- { return iterator(this->m_holder.start() + this->m_holder.m_size); }
1488
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator end() BOOST_NOEXCEPT_OR_NOTHROW
1489
+ {
1490
+ iterator it (this->m_holder.start());
1491
+ it += difference_type(this->m_holder.m_size);
1492
+ return it; //Adding zero to null pointer is allowed (non-UB)
1493
+ }
1354
1494
 
1355
1495
  //! <b>Effects</b>: Returns a const_iterator to the end of the vector.
1356
1496
  //!
1357
1497
  //! <b>Throws</b>: Nothing.
1358
1498
  //!
1359
1499
  //! <b>Complexity</b>: Constant.
1360
- BOOST_CONTAINER_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
1500
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
1361
1501
  { return this->cend(); }
1362
1502
 
1363
1503
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
@@ -1366,7 +1506,7 @@ class vector
1366
1506
  //! <b>Throws</b>: Nothing.
1367
1507
  //!
1368
1508
  //! <b>Complexity</b>: Constant.
1369
- BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
1509
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
1370
1510
  { return reverse_iterator(this->end()); }
1371
1511
 
1372
1512
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
@@ -1375,7 +1515,7 @@ class vector
1375
1515
  //! <b>Throws</b>: Nothing.
1376
1516
  //!
1377
1517
  //! <b>Complexity</b>: Constant.
1378
- BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1518
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1379
1519
  { return this->crbegin(); }
1380
1520
 
1381
1521
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
@@ -1384,7 +1524,7 @@ class vector
1384
1524
  //! <b>Throws</b>: Nothing.
1385
1525
  //!
1386
1526
  //! <b>Complexity</b>: Constant.
1387
- BOOST_CONTAINER_FORCEINLINE reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
1527
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
1388
1528
  { return reverse_iterator(this->begin()); }
1389
1529
 
1390
1530
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
@@ -1393,7 +1533,7 @@ class vector
1393
1533
  //! <b>Throws</b>: Nothing.
1394
1534
  //!
1395
1535
  //! <b>Complexity</b>: Constant.
1396
- BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
1536
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
1397
1537
  { return this->crend(); }
1398
1538
 
1399
1539
  //! <b>Effects</b>: Returns a const_iterator to the first element contained in the vector.
@@ -1401,7 +1541,7 @@ class vector
1401
1541
  //! <b>Throws</b>: Nothing.
1402
1542
  //!
1403
1543
  //! <b>Complexity</b>: Constant.
1404
- BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1544
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1405
1545
  { return const_iterator(this->m_holder.start()); }
1406
1546
 
1407
1547
  //! <b>Effects</b>: Returns a const_iterator to the end of the vector.
@@ -1409,8 +1549,12 @@ class vector
1409
1549
  //! <b>Throws</b>: Nothing.
1410
1550
  //!
1411
1551
  //! <b>Complexity</b>: Constant.
1412
- BOOST_CONTAINER_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
1413
- { return const_iterator(this->m_holder.start() + this->m_holder.m_size); }
1552
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
1553
+ {
1554
+ const_iterator it (this->m_holder.start());
1555
+ it += difference_type(this->m_holder.m_size);
1556
+ return it; //Adding zero to null pointer is allowed (non-UB)
1557
+ }
1414
1558
 
1415
1559
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
1416
1560
  //! of the reversed vector.
@@ -1418,7 +1562,7 @@ class vector
1418
1562
  //! <b>Throws</b>: Nothing.
1419
1563
  //!
1420
1564
  //! <b>Complexity</b>: Constant.
1421
- BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1565
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1422
1566
  { return const_reverse_iterator(this->end());}
1423
1567
 
1424
1568
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
@@ -1427,7 +1571,7 @@ class vector
1427
1571
  //! <b>Throws</b>: Nothing.
1428
1572
  //!
1429
1573
  //! <b>Complexity</b>: Constant.
1430
- BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
1574
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
1431
1575
  { return const_reverse_iterator(this->begin()); }
1432
1576
 
1433
1577
  //////////////////////////////////////////////
@@ -1441,7 +1585,7 @@ class vector
1441
1585
  //! <b>Throws</b>: Nothing.
1442
1586
  //!
1443
1587
  //! <b>Complexity</b>: Constant.
1444
- BOOST_CONTAINER_FORCEINLINE bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
1588
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
1445
1589
  { return !this->m_holder.m_size; }
1446
1590
 
1447
1591
  //! <b>Effects</b>: Returns the number of the elements contained in the vector.
@@ -1449,7 +1593,7 @@ class vector
1449
1593
  //! <b>Throws</b>: Nothing.
1450
1594
  //!
1451
1595
  //! <b>Complexity</b>: Constant.
1452
- BOOST_CONTAINER_FORCEINLINE size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
1596
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
1453
1597
  { return this->m_holder.m_size; }
1454
1598
 
1455
1599
  //! <b>Effects</b>: Returns the largest possible size of the vector.
@@ -1457,7 +1601,7 @@ class vector
1457
1601
  //! <b>Throws</b>: Nothing.
1458
1602
  //!
1459
1603
  //! <b>Complexity</b>: Constant.
1460
- BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
1604
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
1461
1605
  { return allocator_traits_type::max_size(this->m_holder.alloc()); }
1462
1606
 
1463
1607
  //! <b>Effects</b>: Inserts or erases elements at the end such that
@@ -1466,8 +1610,8 @@ class vector
1466
1610
  //! <b>Throws</b>: If memory allocation throws, or T's copy/move or value initialization throws.
1467
1611
  //!
1468
1612
  //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1469
- void resize(size_type new_size)
1470
- { this->priv_resize(new_size, value_init); }
1613
+ inline void resize(size_type new_size)
1614
+ { this->priv_resize(new_size, value_init, alloc_version()); }
1471
1615
 
1472
1616
  //! <b>Effects</b>: Inserts or erases elements at the end such that
1473
1617
  //! the size becomes n. New elements are default initialized.
@@ -1477,8 +1621,8 @@ class vector
1477
1621
  //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1478
1622
  //!
1479
1623
  //! <b>Note</b>: Non-standard extension
1480
- void resize(size_type new_size, default_init_t)
1481
- { this->priv_resize(new_size, default_init); }
1624
+ inline void resize(size_type new_size, default_init_t)
1625
+ { this->priv_resize(new_size, default_init, alloc_version()); }
1482
1626
 
1483
1627
  //! <b>Effects</b>: Inserts or erases elements at the end such that
1484
1628
  //! the size becomes n. New elements are copy constructed from x.
@@ -1486,8 +1630,8 @@ class vector
1486
1630
  //! <b>Throws</b>: If memory allocation throws, or T's copy/move constructor throws.
1487
1631
  //!
1488
1632
  //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1489
- void resize(size_type new_size, const T& x)
1490
- { this->priv_resize(new_size, x); }
1633
+ inline void resize(size_type new_size, const T& x)
1634
+ { this->priv_resize(new_size, x, alloc_version()); }
1491
1635
 
1492
1636
  //! <b>Effects</b>: Number of elements for which memory has been allocated.
1493
1637
  //! capacity() is always greater than or equal to size().
@@ -1495,7 +1639,7 @@ class vector
1495
1639
  //! <b>Throws</b>: Nothing.
1496
1640
  //!
1497
1641
  //! <b>Complexity</b>: Constant.
1498
- BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
1642
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
1499
1643
  { return this->m_holder.capacity(); }
1500
1644
 
1501
1645
  //! <b>Effects</b>: If n is less than or equal to capacity(), this call has no
@@ -1504,10 +1648,10 @@ class vector
1504
1648
  //! n; otherwise, capacity() is unchanged. In either case, size() is unchanged.
1505
1649
  //!
1506
1650
  //! <b>Throws</b>: If memory allocation allocation throws or T's copy/move constructor throws.
1507
- BOOST_CONTAINER_FORCEINLINE void reserve(size_type new_cap)
1651
+ inline void reserve(size_type new_cap)
1508
1652
  {
1509
1653
  if (this->capacity() < new_cap){
1510
- this->priv_reserve_no_capacity(new_cap, alloc_version());
1654
+ this->priv_move_to_new_buffer(new_cap, alloc_version());
1511
1655
  }
1512
1656
  }
1513
1657
 
@@ -1517,7 +1661,7 @@ class vector
1517
1661
  //! <b>Throws</b>: If memory allocation throws, or T's copy/move constructor throws.
1518
1662
  //!
1519
1663
  //! <b>Complexity</b>: Linear to size().
1520
- BOOST_CONTAINER_FORCEINLINE void shrink_to_fit()
1664
+ inline void shrink_to_fit()
1521
1665
  { this->priv_shrink_to_fit(alloc_version()); }
1522
1666
 
1523
1667
  //////////////////////////////////////////////
@@ -1534,7 +1678,7 @@ class vector
1534
1678
  //! <b>Throws</b>: Nothing.
1535
1679
  //!
1536
1680
  //! <b>Complexity</b>: Constant.
1537
- reference front() BOOST_NOEXCEPT_OR_NOTHROW
1681
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference front() BOOST_NOEXCEPT_OR_NOTHROW
1538
1682
  {
1539
1683
  BOOST_ASSERT(!this->empty());
1540
1684
  return *this->m_holder.start();
@@ -1548,7 +1692,7 @@ class vector
1548
1692
  //! <b>Throws</b>: Nothing.
1549
1693
  //!
1550
1694
  //! <b>Complexity</b>: Constant.
1551
- const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
1695
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
1552
1696
  {
1553
1697
  BOOST_ASSERT(!this->empty());
1554
1698
  return *this->m_holder.start();
@@ -1562,10 +1706,10 @@ class vector
1562
1706
  //! <b>Throws</b>: Nothing.
1563
1707
  //!
1564
1708
  //! <b>Complexity</b>: Constant.
1565
- reference back() BOOST_NOEXCEPT_OR_NOTHROW
1709
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference back() BOOST_NOEXCEPT_OR_NOTHROW
1566
1710
  {
1567
1711
  BOOST_ASSERT(!this->empty());
1568
- return this->m_holder.start()[this->m_holder.m_size - 1];
1712
+ return this->m_holder.start()[difference_type(this->m_holder.m_size - 1u)];
1569
1713
  }
1570
1714
 
1571
1715
  //! <b>Requires</b>: !empty()
@@ -1576,7 +1720,7 @@ class vector
1576
1720
  //! <b>Throws</b>: Nothing.
1577
1721
  //!
1578
1722
  //! <b>Complexity</b>: Constant.
1579
- const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW
1723
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW
1580
1724
  {
1581
1725
  BOOST_ASSERT(!this->empty());
1582
1726
  return this->m_holder.start()[this->m_holder.m_size - 1];
@@ -1590,10 +1734,10 @@ class vector
1590
1734
  //! <b>Throws</b>: Nothing.
1591
1735
  //!
1592
1736
  //! <b>Complexity</b>: Constant.
1593
- reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1737
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1594
1738
  {
1595
1739
  BOOST_ASSERT(this->m_holder.m_size > n);
1596
- return this->m_holder.start()[n];
1740
+ return this->m_holder.start()[difference_type(n)];
1597
1741
  }
1598
1742
 
1599
1743
  //! <b>Requires</b>: size() > n.
@@ -1604,7 +1748,8 @@ class vector
1604
1748
  //! <b>Throws</b>: Nothing.
1605
1749
  //!
1606
1750
  //! <b>Complexity</b>: Constant.
1607
- const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1751
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1752
+ const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1608
1753
  {
1609
1754
  BOOST_ASSERT(this->m_holder.m_size > n);
1610
1755
  return this->m_holder.start()[n];
@@ -1621,10 +1766,11 @@ class vector
1621
1766
  //! <b>Complexity</b>: Constant.
1622
1767
  //!
1623
1768
  //! <b>Note</b>: Non-standard extension
1624
- iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1769
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1770
+ iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1625
1771
  {
1626
1772
  BOOST_ASSERT(this->m_holder.m_size >= n);
1627
- return iterator(this->m_holder.start()+n);
1773
+ return iterator(this->m_holder.start()+difference_type(n));
1628
1774
  }
1629
1775
 
1630
1776
  //! <b>Requires</b>: size() >= n.
@@ -1638,10 +1784,11 @@ class vector
1638
1784
  //! <b>Complexity</b>: Constant.
1639
1785
  //!
1640
1786
  //! <b>Note</b>: Non-standard extension
1641
- const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1787
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1788
+ const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1642
1789
  {
1643
1790
  BOOST_ASSERT(this->m_holder.m_size >= n);
1644
- return const_iterator(this->m_holder.start()+n);
1791
+ return const_iterator(this->m_holder.start()+difference_type(n));
1645
1792
  }
1646
1793
 
1647
1794
  //! <b>Requires</b>: begin() <= p <= end().
@@ -1654,7 +1801,8 @@ class vector
1654
1801
  //! <b>Complexity</b>: Constant.
1655
1802
  //!
1656
1803
  //! <b>Note</b>: Non-standard extension
1657
- size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
1804
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1805
+ size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
1658
1806
  {
1659
1807
  //Range check assert done in priv_index_of
1660
1808
  return this->priv_index_of(vector_iterator_get_ptr(p));
@@ -1670,7 +1818,8 @@ class vector
1670
1818
  //! <b>Complexity</b>: Constant.
1671
1819
  //!
1672
1820
  //! <b>Note</b>: Non-standard extension
1673
- size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
1821
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1822
+ size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
1674
1823
  {
1675
1824
  //Range check assert done in priv_index_of
1676
1825
  return this->priv_index_of(vector_iterator_get_ptr(p));
@@ -1681,13 +1830,13 @@ class vector
1681
1830
  //! <b>Effects</b>: Returns a reference to the nth element
1682
1831
  //! from the beginning of the container.
1683
1832
  //!
1684
- //! <b>Throws</b>: std::range_error if n >= size()
1833
+ //! <b>Throws</b>: range_error if n >= size()
1685
1834
  //!
1686
1835
  //! <b>Complexity</b>: Constant.
1687
- reference at(size_type n)
1836
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference at(size_type n)
1688
1837
  {
1689
1838
  this->priv_throw_if_out_of_range(n);
1690
- return this->m_holder.start()[n];
1839
+ return this->m_holder.start()[difference_type(n)];
1691
1840
  }
1692
1841
 
1693
1842
  //! <b>Requires</b>: size() > n.
@@ -1695,10 +1844,10 @@ class vector
1695
1844
  //! <b>Effects</b>: Returns a const reference to the nth element
1696
1845
  //! from the beginning of the container.
1697
1846
  //!
1698
- //! <b>Throws</b>: std::range_error if n >= size()
1847
+ //! <b>Throws</b>: range_error if n >= size()
1699
1848
  //!
1700
1849
  //! <b>Complexity</b>: Constant.
1701
- const_reference at(size_type n) const
1850
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reference at(size_type n) const
1702
1851
  {
1703
1852
  this->priv_throw_if_out_of_range(n);
1704
1853
  return this->m_holder.start()[n];
@@ -1716,7 +1865,7 @@ class vector
1716
1865
  //! <b>Throws</b>: Nothing.
1717
1866
  //!
1718
1867
  //! <b>Complexity</b>: Constant.
1719
- T* data() BOOST_NOEXCEPT_OR_NOTHROW
1868
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline T* data() BOOST_NOEXCEPT_OR_NOTHROW
1720
1869
  { return this->priv_raw_begin(); }
1721
1870
 
1722
1871
  //! <b>Returns</b>: A pointer such that [data(),data() + size()) is a valid range.
@@ -1725,7 +1874,7 @@ class vector
1725
1874
  //! <b>Throws</b>: Nothing.
1726
1875
  //!
1727
1876
  //! <b>Complexity</b>: Constant.
1728
- const T * data() const BOOST_NOEXCEPT_OR_NOTHROW
1877
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const T * data() const BOOST_NOEXCEPT_OR_NOTHROW
1729
1878
  { return this->priv_raw_begin(); }
1730
1879
 
1731
1880
  //////////////////////////////////////////////
@@ -1745,19 +1894,19 @@ class vector
1745
1894
  //!
1746
1895
  //! <b>Complexity</b>: Amortized constant time.
1747
1896
  template<class ...Args>
1748
- BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_FWD_REF(Args)...args)
1897
+ inline reference emplace_back(BOOST_FWD_REF(Args)...args)
1749
1898
  {
1899
+ T* const p = this->priv_raw_end();
1750
1900
  if (BOOST_LIKELY(this->room_enough())){
1751
1901
  //There is more memory, just construct a new object at the end
1752
- T* const p = this->priv_raw_end();
1753
1902
  allocator_traits_type::construct(this->m_holder.alloc(), p, ::boost::forward<Args>(args)...);
1754
1903
  ++this->m_holder.m_size;
1755
1904
  return *p;
1756
1905
  }
1757
1906
  else{
1758
- typedef dtl::insert_emplace_proxy<Allocator, T*, Args...> type;
1759
- return *this->priv_forward_range_insert_no_capacity
1760
- (this->back_ptr(), 1, type(::boost::forward<Args>(args)...), alloc_version());
1907
+ typedef dtl::insert_emplace_proxy<allocator_type, Args...> proxy_t;
1908
+ return *this->priv_insert_forward_range_no_capacity
1909
+ (p, 1, proxy_t(::boost::forward<Args>(args)...), alloc_version());
1761
1910
  }
1762
1911
  }
1763
1912
 
@@ -1770,7 +1919,7 @@ class vector
1770
1919
  //!
1771
1920
  //! <b>Note</b>: Non-standard extension.
1772
1921
  template<class ...Args>
1773
- BOOST_CONTAINER_FORCEINLINE bool stable_emplace_back(BOOST_FWD_REF(Args)...args)
1922
+ inline bool stable_emplace_back(BOOST_FWD_REF(Args)...args)
1774
1923
  {
1775
1924
  const bool is_room_enough = this->room_enough() || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(1u));
1776
1925
  if (BOOST_LIKELY(is_room_enough)){
@@ -1792,37 +1941,37 @@ class vector
1792
1941
  //! <b>Complexity</b>: If position is end(), amortized constant time
1793
1942
  //! Linear time otherwise.
1794
1943
  template<class ...Args>
1795
- iterator emplace(const_iterator position, BOOST_FWD_REF(Args) ...args)
1944
+ inline iterator emplace(const_iterator position, BOOST_FWD_REF(Args) ...args)
1796
1945
  {
1797
1946
  BOOST_ASSERT(this->priv_in_range_or_end(position));
1798
1947
  //Just call more general insert(pos, size, value) and return iterator
1799
- typedef dtl::insert_emplace_proxy<Allocator, T*, Args...> type;
1800
- return this->priv_forward_range_insert( vector_iterator_get_ptr(position), 1
1801
- , type(::boost::forward<Args>(args)...));
1948
+ typedef dtl::insert_emplace_proxy<allocator_type, Args...> proxy_t;
1949
+ return this->priv_insert_forward_range( vector_iterator_get_ptr(position), 1
1950
+ , proxy_t(::boost::forward<Args>(args)...));
1802
1951
  }
1803
1952
 
1804
1953
  #else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
1805
1954
 
1806
1955
  #define BOOST_CONTAINER_VECTOR_EMPLACE_CODE(N) \
1807
1956
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1808
- BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_MOVE_UREF##N)\
1957
+ inline reference emplace_back(BOOST_MOVE_UREF##N)\
1809
1958
  {\
1959
+ T* const p = this->priv_raw_end();\
1810
1960
  if (BOOST_LIKELY(this->room_enough())){\
1811
- T* const p = this->priv_raw_end();\
1812
1961
  allocator_traits_type::construct (this->m_holder.alloc()\
1813
1962
  , this->priv_raw_end() BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
1814
1963
  ++this->m_holder.m_size;\
1815
1964
  return *p;\
1816
1965
  }\
1817
1966
  else{\
1818
- typedef dtl::insert_emplace_proxy_arg##N<Allocator, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
1819
- return *this->priv_forward_range_insert_no_capacity\
1820
- ( this->back_ptr(), 1, type(BOOST_MOVE_FWD##N), alloc_version());\
1967
+ typedef dtl::insert_emplace_proxy_arg##N<allocator_type BOOST_MOVE_I##N BOOST_MOVE_TARG##N> proxy_t;\
1968
+ return *this->priv_insert_forward_range_no_capacity\
1969
+ ( p, 1, proxy_t(BOOST_MOVE_FWD##N), alloc_version());\
1821
1970
  }\
1822
1971
  }\
1823
1972
  \
1824
1973
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1825
- BOOST_CONTAINER_FORCEINLINE bool stable_emplace_back(BOOST_MOVE_UREF##N)\
1974
+ inline bool stable_emplace_back(BOOST_MOVE_UREF##N)\
1826
1975
  {\
1827
1976
  const bool is_room_enough = this->room_enough() || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(1u));\
1828
1977
  if (BOOST_LIKELY(is_room_enough)){\
@@ -1834,11 +1983,11 @@ class vector
1834
1983
  }\
1835
1984
  \
1836
1985
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1837
- iterator emplace(const_iterator pos BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1986
+ inline iterator emplace(const_iterator pos BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1838
1987
  {\
1839
1988
  BOOST_ASSERT(this->priv_in_range_or_end(pos));\
1840
- typedef dtl::insert_emplace_proxy_arg##N<Allocator, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
1841
- return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), 1, type(BOOST_MOVE_FWD##N));\
1989
+ typedef dtl::insert_emplace_proxy_arg##N<allocator_type BOOST_MOVE_I##N BOOST_MOVE_TARG##N> proxy_t;\
1990
+ return this->priv_insert_forward_range(vector_iterator_get_ptr(pos), 1, proxy_t(BOOST_MOVE_FWD##N));\
1842
1991
  }\
1843
1992
  //
1844
1993
  BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_VECTOR_EMPLACE_CODE)
@@ -1900,11 +2049,11 @@ class vector
1900
2049
  //! <b>Throws</b>: If memory allocation throws or T's copy/move constructor throws.
1901
2050
  //!
1902
2051
  //! <b>Complexity</b>: Linear to n.
1903
- iterator insert(const_iterator p, size_type n, const T& x)
2052
+ inline iterator insert(const_iterator p, size_type n, const T& x)
1904
2053
  {
1905
2054
  BOOST_ASSERT(this->priv_in_range_or_end(p));
1906
- dtl::insert_n_copies_proxy<Allocator, T*> proxy(x);
1907
- return this->priv_forward_range_insert(vector_iterator_get_ptr(p), n, proxy);
2055
+ dtl::insert_n_copies_proxy<allocator_type> proxy(x);
2056
+ return this->priv_insert_forward_range(vector_iterator_get_ptr(p), n, proxy);
1908
2057
  }
1909
2058
 
1910
2059
  //! <b>Requires</b>: p must be a valid iterator of *this.
@@ -1929,18 +2078,18 @@ class vector
1929
2078
  )
1930
2079
  {
1931
2080
  BOOST_ASSERT(this->priv_in_range_or_end(pos));
1932
- const size_type n_pos = pos - this->cbegin();
2081
+ const size_type n_pos = size_type(pos - this->cbegin());
1933
2082
  iterator it(vector_iterator_get_ptr(pos));
1934
2083
  for(;first != last; ++first){
1935
2084
  it = this->emplace(it, *first);
1936
2085
  ++it;
1937
2086
  }
1938
- return iterator(this->m_holder.start() + n_pos);
2087
+ return iterator(this->m_holder.start() + difference_type(n_pos));
1939
2088
  }
1940
2089
 
1941
2090
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1942
2091
  template <class FwdIt>
1943
- iterator insert(const_iterator pos, FwdIt first, FwdIt last
2092
+ inline iterator insert(const_iterator pos, FwdIt first, FwdIt last
1944
2093
  , typename dtl::disable_if_or
1945
2094
  < void
1946
2095
  , dtl::is_convertible<FwdIt, size_type>
@@ -1948,9 +2097,15 @@ class vector
1948
2097
  >::type * = 0
1949
2098
  )
1950
2099
  {
2100
+ typedef typename iter_size<FwdIt>::type it_size_type;
1951
2101
  BOOST_ASSERT(this->priv_in_range_or_end(pos));
1952
- dtl::insert_range_proxy<Allocator, FwdIt, T*> proxy(first);
1953
- return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), boost::container::iterator_distance(first, last), proxy);
2102
+ const it_size_type sz = boost::container::iterator_udistance(first, last);
2103
+ if (BOOST_UNLIKELY(sz > size_type(-1))){
2104
+ boost::container::throw_length_error("vector::insert, FwdIt's max length reached");
2105
+ }
2106
+
2107
+ dtl::insert_range_proxy<allocator_type, FwdIt> proxy(first);
2108
+ return this->priv_insert_forward_range(vector_iterator_get_ptr(pos), static_cast<size_type>(sz), proxy);
1954
2109
  }
1955
2110
  #endif
1956
2111
 
@@ -1971,14 +2126,14 @@ class vector
1971
2126
  //! a non-standard extension.
1972
2127
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1973
2128
  template <class InIt>
1974
- iterator insert(const_iterator pos, size_type num, InIt first, InIt last)
2129
+ inline iterator insert(const_iterator pos, size_type num, InIt first, InIt last)
1975
2130
  {
1976
2131
  BOOST_ASSERT(this->priv_in_range_or_end(pos));
1977
2132
  BOOST_ASSERT(dtl::is_input_iterator<InIt>::value ||
1978
- num == static_cast<size_type>(boost::container::iterator_distance(first, last)));
2133
+ num == boost::container::iterator_udistance(first, last));
1979
2134
  (void)last;
1980
- dtl::insert_range_proxy<Allocator, InIt, T*> proxy(first);
1981
- return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), num, proxy);
2135
+ dtl::insert_range_proxy<allocator_type, InIt> proxy(first);
2136
+ return this->priv_insert_forward_range(vector_iterator_get_ptr(pos), num, proxy);
1982
2137
  }
1983
2138
  #endif
1984
2139
 
@@ -1990,7 +2145,7 @@ class vector
1990
2145
  //! <b>Returns</b>: an iterator to the first inserted element or position if first == last.
1991
2146
  //!
1992
2147
  //! <b>Complexity</b>: Linear to the range [il.begin(), il.end()).
1993
- iterator insert(const_iterator position, std::initializer_list<value_type> il)
2148
+ inline iterator insert(const_iterator position, std::initializer_list<value_type> il)
1994
2149
  {
1995
2150
  //Assertion done in insert()
1996
2151
  return this->insert(position, il.begin(), il.end());
@@ -2002,11 +2157,12 @@ class vector
2002
2157
  //! <b>Throws</b>: Nothing.
2003
2158
  //!
2004
2159
  //! <b>Complexity</b>: Constant time.
2005
- void pop_back() BOOST_NOEXCEPT_OR_NOTHROW
2160
+ inline void pop_back() BOOST_NOEXCEPT_OR_NOTHROW
2006
2161
  {
2007
2162
  BOOST_ASSERT(!this->empty());
2008
2163
  //Destroy last element
2009
- this->priv_destroy_last();
2164
+ allocator_traits_type::destroy(this->get_stored_allocator(), this->priv_raw_end() - 1);
2165
+ --this->m_holder.m_size;
2010
2166
  }
2011
2167
 
2012
2168
  //! <b>Effects</b>: Erases the element at position pos.
@@ -2020,10 +2176,16 @@ class vector
2020
2176
  BOOST_ASSERT(this->priv_in_range(position));
2021
2177
  const pointer p = vector_iterator_get_ptr(position);
2022
2178
  T *const pos_ptr = boost::movelib::to_raw_pointer(p);
2023
- T *const beg_ptr = this->priv_raw_begin();
2024
- T *const new_end_ptr = ::boost::container::move(pos_ptr + 1, beg_ptr + this->m_holder.m_size, pos_ptr);
2179
+ T *const end_ptr = this->priv_raw_end();
2180
+
2025
2181
  //Move elements forward and destroy last
2026
- this->priv_destroy_last(pos_ptr != new_end_ptr);
2182
+ (void)::boost::container::move(pos_ptr + 1, end_ptr, pos_ptr);
2183
+
2184
+ T *const last_ptr = end_ptr-1;
2185
+ if(!value_traits::trivial_dctr_after_move || pos_ptr == last_ptr){
2186
+ allocator_traits_type::destroy(this->get_stored_allocator(), last_ptr);
2187
+ }
2188
+ --this->m_holder.m_size;
2027
2189
  return iterator(p);
2028
2190
  }
2029
2191
 
@@ -2035,14 +2197,19 @@ class vector
2035
2197
  //! plus linear to the elements between pos and the last element.
2036
2198
  iterator erase(const_iterator first, const_iterator last)
2037
2199
  {
2038
- BOOST_ASSERT(first == last ||
2039
- (first < last && this->priv_in_range(first) && this->priv_in_range_or_end(last)));
2040
- if (first != last){
2200
+ BOOST_ASSERT(this->priv_in_range_or_end(first));
2201
+ BOOST_ASSERT(this->priv_in_range_or_end(last));
2202
+ BOOST_ASSERT(first <= last);
2203
+ if(first != last){
2041
2204
  T* const old_end_ptr = this->priv_raw_end();
2042
2205
  T* const first_ptr = boost::movelib::to_raw_pointer(vector_iterator_get_ptr(first));
2043
2206
  T* const last_ptr = boost::movelib::to_raw_pointer(vector_iterator_get_ptr(last));
2044
- T* const ptr = boost::movelib::to_raw_pointer(boost::container::move(last_ptr, old_end_ptr, first_ptr));
2045
- this->priv_destroy_last_n(old_end_ptr - ptr);
2207
+ T* const new_last_ptr = boost::movelib::to_raw_pointer(boost::container::move(last_ptr, old_end_ptr, first_ptr));
2208
+ const size_type n = static_cast<size_type>(old_end_ptr - new_last_ptr);
2209
+ if(!value_traits::trivial_dctr_after_move || old_end_ptr == last_ptr){
2210
+ boost::container::destroy_alloc_n(this->get_stored_allocator(), new_last_ptr, n);
2211
+ }
2212
+ this->m_holder.dec_stored_size(n);
2046
2213
  }
2047
2214
  return iterator(vector_iterator_get_ptr(first));
2048
2215
  }
@@ -2052,12 +2219,12 @@ class vector
2052
2219
  //! <b>Throws</b>: Nothing.
2053
2220
  //!
2054
2221
  //! <b>Complexity</b>: Constant.
2055
- BOOST_CONTAINER_FORCEINLINE void swap(vector& x)
2222
+ inline void swap(vector& x)
2056
2223
  BOOST_NOEXCEPT_IF( ((allocator_traits_type::propagate_on_container_swap::value
2057
2224
  || allocator_traits_type::is_always_equal::value) &&
2058
- !dtl::is_version<Allocator, 0>::value))
2225
+ !dtl::is_version<allocator_type, 0>::value))
2059
2226
  {
2060
- this->priv_swap(x, dtl::bool_<dtl::is_version<Allocator, 0>::value>());
2227
+ this->priv_swap(x, dtl::bool_<dtl::is_version<allocator_type, 0>::value>());
2061
2228
  }
2062
2229
 
2063
2230
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
@@ -2069,74 +2236,67 @@ class vector
2069
2236
  //! <b>Complexity</b>: Linear
2070
2237
  //!
2071
2238
  //! <b>Note</b>: Non-standard extension to support static_vector
2072
- template<class OtherAllocator>
2073
- BOOST_CONTAINER_FORCEINLINE void swap(vector<T, OtherAllocator> & x
2239
+ template<class OtherA>
2240
+ inline void swap(vector<T, OtherA, Options> & x
2074
2241
  , typename dtl::enable_if_and
2075
2242
  < void
2076
- , dtl::is_version<OtherAllocator, 0>
2077
- , dtl::is_different<OtherAllocator, allocator_type>
2243
+ , dtl::is_version<typename real_allocator<T, OtherA>::type, 0>
2244
+ , dtl::is_different<typename real_allocator<T, OtherA>::type, allocator_type>
2078
2245
  >::type * = 0
2079
2246
  )
2080
2247
  { this->m_holder.deep_swap(x.m_holder); }
2081
2248
 
2082
2249
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
2083
2250
 
2084
- //! <b>Effects</b>: Erases all the elements of the vector.
2251
+ //! <b>Effects</b>: Erases all the elements of the vector. Leaves the capacity() of the vector unchanged.
2085
2252
  //!
2086
2253
  //! <b>Throws</b>: Nothing.
2087
2254
  //!
2088
2255
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2089
- BOOST_CONTAINER_FORCEINLINE void clear() BOOST_NOEXCEPT_OR_NOTHROW
2256
+ inline void clear() BOOST_NOEXCEPT_OR_NOTHROW
2090
2257
  { this->priv_destroy_all(); }
2091
2258
 
2092
2259
  //! <b>Effects</b>: Returns true if x and y are equal
2093
2260
  //!
2094
2261
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2095
- BOOST_CONTAINER_FORCEINLINE friend bool operator==(const vector& x, const vector& y)
2262
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator==(const vector& x, const vector& y)
2096
2263
  { return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
2097
2264
 
2098
2265
  //! <b>Effects</b>: Returns true if x and y are unequal
2099
2266
  //!
2100
2267
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2101
- BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const vector& x, const vector& y)
2268
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator!=(const vector& x, const vector& y)
2102
2269
  { return !(x == y); }
2103
2270
 
2104
2271
  //! <b>Effects</b>: Returns true if x is less than y
2105
2272
  //!
2106
2273
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2107
- friend bool operator<(const vector& x, const vector& y)
2108
- {
2109
- const_iterator first1(x.cbegin()), first2(y.cbegin());
2110
- const const_iterator last1(x.cend()), last2(y.cend());
2111
- for ( ; (first1 != last1) && (first2 != last2); ++first1, ++first2 ) {
2112
- if (*first1 < *first2) return true;
2113
- if (*first2 < *first1) return false;
2114
- }
2115
- return (first1 == last1) && (first2 != last2);
2116
- }
2274
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD friend bool operator<(const vector& x, const vector& y)
2275
+ { return boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
2117
2276
 
2118
2277
  //! <b>Effects</b>: Returns true if x is greater than y
2119
2278
  //!
2120
2279
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2121
- BOOST_CONTAINER_FORCEINLINE friend bool operator>(const vector& x, const vector& y)
2280
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator>(const vector& x, const vector& y)
2122
2281
  { return y < x; }
2123
2282
 
2124
2283
  //! <b>Effects</b>: Returns true if x is equal or less than y
2125
2284
  //!
2126
2285
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2127
- BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const vector& x, const vector& y)
2286
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator<=(const vector& x, const vector& y)
2128
2287
  { return !(y < x); }
2129
2288
 
2130
2289
  //! <b>Effects</b>: Returns true if x is equal or greater than y
2131
2290
  //!
2132
2291
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2133
- BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const vector& x, const vector& y)
2292
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator>=(const vector& x, const vector& y)
2134
2293
  { return !(x < y); }
2135
2294
 
2136
2295
  //! <b>Effects</b>: x.swap(y)
2137
2296
  //!
2138
2297
  //! <b>Complexity</b>: Constant.
2139
- BOOST_CONTAINER_FORCEINLINE friend void swap(vector& x, vector& y)
2298
+ inline friend void swap(vector& x, vector& y)
2299
+ BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT(x.swap(y)))
2140
2300
  { x.swap(y); }
2141
2301
 
2142
2302
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
@@ -2152,23 +2312,23 @@ class vector
2152
2312
  bool stable_reserve(size_type new_cap)
2153
2313
  {
2154
2314
  const size_type cp = this->capacity();
2155
- return cp >= new_cap || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(new_cap - cp));
2315
+ return cp >= new_cap || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(size_type(new_cap - cp)));
2156
2316
  }
2157
2317
 
2158
2318
  //Absolutely experimental. This function might change, disappear or simply crash!
2159
2319
  template<class BiDirPosConstIt, class BiDirValueIt>
2160
- BOOST_CONTAINER_FORCEINLINE void insert_ordered_at(const size_type element_count, BiDirPosConstIt last_position_it, BiDirValueIt last_value_it)
2320
+ inline void insert_ordered_at(const size_type element_count, BiDirPosConstIt last_position_it, BiDirValueIt last_value_it)
2161
2321
  {
2162
2322
  typedef vector_insert_ordered_cursor<BiDirPosConstIt, BiDirValueIt> inserter_t;
2163
2323
  return this->priv_insert_ordered_at(element_count, inserter_t(last_position_it, last_value_it));
2164
2324
  }
2165
2325
 
2166
2326
  template<class InputIt>
2167
- BOOST_CONTAINER_FORCEINLINE void merge(InputIt first, InputIt last)
2327
+ inline void merge(InputIt first, InputIt last)
2168
2328
  { this->merge(first, last, value_less_t()); }
2169
2329
 
2170
2330
  template<class InputIt, class Compare>
2171
- BOOST_CONTAINER_FORCEINLINE void merge(InputIt first, InputIt last, Compare comp)
2331
+ inline void merge(InputIt first, InputIt last, Compare comp)
2172
2332
  {
2173
2333
  size_type const s = this->size();
2174
2334
  size_type const c = this->capacity();
@@ -2176,11 +2336,11 @@ class vector
2176
2336
  size_type const free_cap = c - s;
2177
2337
  //If not input iterator and new elements don't fit in the remaining capacity, merge in new buffer
2178
2338
  if(!dtl::is_input_iterator<InputIt>::value &&
2179
- free_cap < (n = static_cast<size_type>(boost::container::iterator_distance(first, last)))){
2339
+ free_cap < (n = boost::container::iterator_udistance(first, last))){
2180
2340
  this->priv_merge_in_new_buffer(first, n, comp, alloc_version());
2181
2341
  }
2182
2342
  else{
2183
- iterator pos(this->insert(this->cend(), first, last));
2343
+ this->insert(this->cend(), first, last);
2184
2344
  T *const raw_beg = this->priv_raw_begin();
2185
2345
  T *const raw_end = this->priv_raw_end();
2186
2346
  T *const raw_pos = raw_beg + s;
@@ -2189,17 +2349,17 @@ class vector
2189
2349
  }
2190
2350
 
2191
2351
  template<class InputIt>
2192
- BOOST_CONTAINER_FORCEINLINE void merge_unique(InputIt first, InputIt last)
2352
+ inline void merge_unique(InputIt first, InputIt last)
2193
2353
  { this->merge_unique(first, last, value_less_t()); }
2194
2354
 
2195
2355
  template<class InputIt, class Compare>
2196
- BOOST_CONTAINER_FORCEINLINE void merge_unique(InputIt first, InputIt last, Compare comp)
2356
+ inline void merge_unique(InputIt first, InputIt last, Compare comp)
2197
2357
  {
2198
- size_type const s = this->size();
2358
+ size_type const old_size = this->size();
2199
2359
  this->priv_set_difference_back(first, last, comp);
2200
2360
  T *const raw_beg = this->priv_raw_begin();
2201
2361
  T *const raw_end = this->priv_raw_end();
2202
- T *raw_pos = raw_beg + s;
2362
+ T *raw_pos = raw_beg + old_size;
2203
2363
  boost::movelib::adaptive_merge(raw_beg, raw_pos, raw_end, comp, raw_end, this->capacity() - this->size());
2204
2364
  }
2205
2365
 
@@ -2243,14 +2403,14 @@ class vector
2243
2403
  else{
2244
2404
  //Hole was just filled, disable exception rollback and change vector size
2245
2405
  past_hole_values_destroyer.release();
2246
- this->m_holder.m_size += element_count;
2406
+ this->m_holder.inc_stored_size(element_count);
2247
2407
  }
2248
2408
  }
2249
2409
  else{
2250
2410
  if(old_hole_size){
2251
2411
  //Hole was just filled by priv_insert_ordered_at_shift_range, disable exception rollback and change vector size
2252
2412
  past_hole_values_destroyer.release();
2253
- this->m_holder.m_size += element_count;
2413
+ this->m_holder.inc_stored_size(element_count);
2254
2414
  }
2255
2415
  //Insert the new value in the already constructed range
2256
2416
  begin_ptr[pos + insertions_left - 1] = position_value.get_val();
@@ -2276,14 +2436,14 @@ class vector
2276
2436
 
2277
2437
  if (comp(*first1, *first2)) {
2278
2438
  this->emplace_back(*first1);
2279
- //Reallocation happened, update range
2280
2439
  T * const raw_begin = this->priv_raw_begin();
2281
- if(old_first2 != raw_begin){
2440
+ if(old_first2 != raw_begin)
2441
+ {
2442
+ //Reallocation happened, update range
2282
2443
  first2 = raw_begin + (first2 - old_first2);
2283
- last2 = first2 + (last2 - old_first2);
2444
+ last2 = raw_begin + (last2 - old_first2);
2284
2445
  old_first2 = raw_begin;
2285
2446
  }
2286
-
2287
2447
  ++first1;
2288
2448
  }
2289
2449
  else {
@@ -2296,9 +2456,9 @@ class vector
2296
2456
  }
2297
2457
 
2298
2458
  template<class FwdIt, class Compare>
2299
- BOOST_CONTAINER_FORCEINLINE void priv_merge_in_new_buffer(FwdIt, size_type, Compare, version_0)
2459
+ inline void priv_merge_in_new_buffer(FwdIt, size_type, Compare, version_0)
2300
2460
  {
2301
- throw_bad_alloc();
2461
+ alloc_holder_t::on_capacity_overflow();
2302
2462
  }
2303
2463
 
2304
2464
  template<class FwdIt, class Compare, class Version>
@@ -2348,108 +2508,129 @@ class vector
2348
2508
  pointer const old_p = this->m_holder.start();
2349
2509
  size_type const old_cap = this->m_holder.capacity();
2350
2510
  boost::container::destroy_alloc_n(a, boost::movelib::to_raw_pointer(old_p), old_size);
2351
- this->m_holder.deallocate(old_p, old_cap);
2352
- this->m_holder.m_size = old_size + added;
2511
+ if (old_cap > 0) {
2512
+ this->m_holder.deallocate(old_p, old_cap);
2513
+ }
2514
+ m_holder.set_stored_size(old_size + added);
2353
2515
  this->m_holder.start(new_storage);
2354
2516
  this->m_holder.capacity(new_cap);
2355
2517
  new_buffer_deallocator.release();
2356
2518
  new_values_destroyer.release();
2357
2519
  }
2358
2520
 
2359
- BOOST_CONTAINER_FORCEINLINE bool room_enough() const
2360
- { return this->m_holder.m_size < this->m_holder.capacity(); }
2521
+ inline bool room_enough() const
2522
+ { return this->m_holder.m_size != this->m_holder.capacity(); }
2361
2523
 
2362
- BOOST_CONTAINER_FORCEINLINE pointer back_ptr() const
2363
- { return this->m_holder.start() + this->m_holder.m_size; }
2524
+ inline pointer back_ptr() const
2525
+ { return this->m_holder.start() + difference_type(this->m_holder.m_size); }
2364
2526
 
2365
- size_type priv_index_of(pointer p) const
2527
+ inline size_type priv_index_of(pointer p) const
2366
2528
  {
2367
2529
  BOOST_ASSERT(this->m_holder.start() <= p);
2368
- BOOST_ASSERT(p <= (this->m_holder.start()+this->size()));
2530
+ BOOST_ASSERT(p <= (this->m_holder.start()+difference_type(this->size())));
2369
2531
  return static_cast<size_type>(p - this->m_holder.start());
2370
2532
  }
2371
2533
 
2372
- template<class OtherAllocator>
2373
- void priv_move_assign(BOOST_RV_REF_BEG vector<T, OtherAllocator> BOOST_RV_REF_END x
2534
+ template<class OtherA>
2535
+ void priv_move_assign(BOOST_RV_REF_BEG vector<T, OtherA, Options> BOOST_RV_REF_END x
2374
2536
  , typename dtl::enable_if_c
2375
- < dtl::is_version<OtherAllocator, 0>::value >::type * = 0)
2537
+ < dtl::is_version<typename real_allocator<T, OtherA>::type, 0>::value >::type * = 0)
2376
2538
  {
2377
- if(!dtl::is_same<OtherAllocator, allocator_type>::value &&
2539
+ if(!dtl::is_same<typename real_allocator<T, OtherA>::type, allocator_type>::value &&
2378
2540
  this->capacity() < x.size()){
2379
- throw_bad_alloc();
2541
+ alloc_holder_t::on_capacity_overflow();
2380
2542
  }
2381
2543
  T* const this_start = this->priv_raw_begin();
2382
2544
  T* const other_start = x.priv_raw_begin();
2383
2545
  const size_type this_sz = m_holder.m_size;
2384
2546
  const size_type other_sz = static_cast<size_type>(x.m_holder.m_size);
2385
2547
  boost::container::move_assign_range_alloc_n(this->m_holder.alloc(), other_start, other_sz, this_start, this_sz);
2386
- this->m_holder.m_size = other_sz;
2548
+ m_holder.set_stored_size(other_sz);
2549
+ //Not emptying the source container seems to be confusing for users as drop-in
2550
+ //replacement for non-static vectors, so clear it.
2551
+ x.clear();
2387
2552
  }
2388
2553
 
2389
- template<class OtherAllocator>
2390
- void priv_move_assign(BOOST_RV_REF_BEG vector<T, OtherAllocator> BOOST_RV_REF_END x
2391
- , typename dtl::disable_if_or
2392
- < void
2393
- , dtl::is_version<OtherAllocator, 0>
2394
- , dtl::is_different<OtherAllocator, allocator_type>
2395
- >::type * = 0)
2554
+ template<class OtherA>
2555
+ void priv_move_assign_steal_or_assign(BOOST_RV_REF_BEG vector<T, OtherA, Options> BOOST_RV_REF_END x, dtl::true_type /*data_can_be_always_stolen*/)
2556
+ {
2557
+ this->clear();
2558
+ if (BOOST_LIKELY(!!this->m_holder.m_start))
2559
+ this->m_holder.deallocate(this->m_holder.m_start, this->m_holder.m_capacity);
2560
+ this->m_holder.steal_resources(x.m_holder);
2561
+ }
2562
+
2563
+ template<class OtherA>
2564
+ void priv_move_assign_steal_or_assign(BOOST_RV_REF_BEG vector<T, OtherA, Options> BOOST_RV_REF_END x, dtl::false_type /*data_can_be_always_stolen*/)
2396
2565
  {
2397
- //for move assignment, no aliasing (&x != this) is assummed.
2398
- BOOST_ASSERT(this != &x);
2399
- allocator_type &this_alloc = this->m_holder.alloc();
2400
- allocator_type &x_alloc = x.m_holder.alloc();
2401
2566
  const bool propagate_alloc = allocator_traits_type::propagate_on_container_move_assignment::value;
2567
+ allocator_type& this_alloc = this->m_holder.alloc();
2568
+ allocator_type& x_alloc = x.m_holder.alloc();
2402
2569
 
2403
- const bool is_propagable_from_x = is_propagable_from(x_alloc, x.m_holder.start(), this_alloc, propagate_alloc);
2404
- const bool is_propagable_from_t = is_propagable_from(this_alloc, m_holder.start(), x_alloc, propagate_alloc);
2405
- const bool are_both_propagable = is_propagable_from_x && is_propagable_from_t;
2570
+ //In this allocator move constructor the allocator might will be propagated, but to support small_vector-like
2571
+ //types, we need to check the currently owned buffers to know if they are propagable.
2572
+ const bool is_buffer_propagable_from_x = is_propagable_from<propagate_alloc>(x_alloc, x.m_holder.start(), this_alloc);
2406
2573
 
2407
- //Resources can be transferred if both allocators are
2408
- //going to be equal after this function (either propagated or already equal)
2409
- if(are_both_propagable){
2410
- //Destroy objects but retain memory in case x reuses it in the future
2411
- this->clear();
2412
- this->m_holder.swap_resources(x.m_holder);
2413
- }
2414
- else if(is_propagable_from_x){
2415
- this->clear();
2416
- this->m_holder.deallocate(this->m_holder.m_start, this->m_holder.m_capacity);
2417
- this->m_holder.steal_resources(x.m_holder);
2574
+ if (is_buffer_propagable_from_x) {
2575
+ this->priv_move_assign_steal_or_assign(boost::move(x), dtl::true_type());
2418
2576
  }
2419
- //Else do a one by one move
2420
- else{
2577
+ //Else do a one by one move. Also, clear the source as users find confusing
2578
+ //elements are still alive in the source container.
2579
+ else {
2421
2580
  this->assign( boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(x.begin()))
2422
- , boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(x.end() ))
2423
- );
2581
+ , boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(x.end())) );
2582
+ x.clear();
2424
2583
  }
2584
+ }
2585
+
2586
+ template<class OtherA>
2587
+ void priv_move_assign(BOOST_RV_REF_BEG vector<T, OtherA, Options> BOOST_RV_REF_END x
2588
+ , typename dtl::disable_if_or
2589
+ < void
2590
+ , dtl::is_version<typename real_allocator<T, OtherA>::type, 0>
2591
+ , dtl::is_different<typename real_allocator<T, OtherA>::type, allocator_type>
2592
+ >::type * = 0)
2593
+ {
2594
+ //for move assignment, no aliasing (&x != this) is assumed.
2595
+ //x.size() == 0 is allowed for buggy std libraries.
2596
+ BOOST_ASSERT(this != &x || x.size() == 0);
2597
+ const bool alloc_is_always_equal = allocator_traits_type::is_always_equal::value;
2598
+ const bool propagate_alloc = allocator_traits_type::propagate_on_container_move_assignment::value;
2599
+ const bool partially_propagable_alloc = allocator_traits_type::is_partially_propagable::value;
2600
+ const bool data_can_be_always_be_stolen = alloc_is_always_equal || (propagate_alloc && !partially_propagable_alloc);
2601
+
2602
+ this->priv_move_assign_steal_or_assign(boost::move(x), dtl::bool_<data_can_be_always_be_stolen>());
2603
+
2425
2604
  //Move allocator if needed
2605
+ allocator_type& this_alloc = this->m_holder.alloc();
2606
+ allocator_type& x_alloc = x.m_holder.alloc();
2426
2607
  dtl::move_alloc(this_alloc, x_alloc, dtl::bool_<propagate_alloc>());
2427
2608
  }
2428
2609
 
2429
- template<class OtherAllocator>
2430
- void priv_copy_assign(const vector<T, OtherAllocator> &x
2610
+ template<class OtherA>
2611
+ void priv_copy_assign(const vector<T, OtherA, Options> &x
2431
2612
  , typename dtl::enable_if_c
2432
- < dtl::is_version<OtherAllocator, 0>::value >::type * = 0)
2613
+ < dtl::is_version<typename real_allocator<T, OtherA>::type, 0>::value >::type * = 0)
2433
2614
  {
2434
- if(!dtl::is_same<OtherAllocator, allocator_type>::value &&
2615
+ if(!dtl::is_same<typename real_allocator<T, OtherA>::type, allocator_type>::value &&
2435
2616
  this->capacity() < x.size()){
2436
- throw_bad_alloc();
2617
+ alloc_holder_t::on_capacity_overflow();
2437
2618
  }
2438
2619
  T* const this_start = this->priv_raw_begin();
2439
2620
  T* const other_start = x.priv_raw_begin();
2440
2621
  const size_type this_sz = m_holder.m_size;
2441
2622
  const size_type other_sz = static_cast<size_type>(x.m_holder.m_size);
2442
2623
  boost::container::copy_assign_range_alloc_n(this->m_holder.alloc(), other_start, other_sz, this_start, this_sz);
2443
- this->m_holder.m_size = other_sz;
2624
+ m_holder.set_stored_size(other_sz);
2444
2625
  }
2445
2626
 
2446
- template<class OtherAllocator>
2627
+ template<class OtherA>
2447
2628
  typename dtl::disable_if_or
2448
2629
  < void
2449
- , dtl::is_version<OtherAllocator, 0>
2450
- , dtl::is_different<OtherAllocator, allocator_type>
2630
+ , dtl::is_version<typename real_allocator<T, OtherA>::type, 0>
2631
+ , dtl::is_different<typename real_allocator<T, OtherA>::type, allocator_type>
2451
2632
  >::type
2452
- priv_copy_assign(const vector<T, OtherAllocator> &x)
2633
+ priv_copy_assign(const vector<T, OtherA, Options> &x)
2453
2634
  {
2454
2635
  allocator_type &this_alloc = this->m_holder.alloc();
2455
2636
  const allocator_type &x_alloc = x.m_holder.alloc();
@@ -2464,60 +2645,144 @@ class vector
2464
2645
  }
2465
2646
 
2466
2647
  template<class Vector> //Template it to avoid it in explicit instantiations
2467
- void priv_swap(Vector &x, dtl::true_type) //version_0
2648
+ inline void priv_swap(Vector &x, dtl::true_type) //version_0
2468
2649
  { this->m_holder.deep_swap(x.m_holder); }
2469
2650
 
2470
2651
  template<class Vector> //Template it to avoid it in explicit instantiations
2471
2652
  void priv_swap(Vector &x, dtl::false_type) //version_N
2472
2653
  {
2654
+ BOOST_ASSERT(allocator_traits_type::propagate_on_container_swap::value ||
2655
+ allocator_traits_type::is_always_equal::value ||
2656
+ this->get_stored_allocator() == x.get_stored_allocator());
2657
+
2658
+ if (BOOST_UNLIKELY(&x == this)) {
2659
+ return;
2660
+ }
2661
+
2662
+ //Just swap internals
2663
+ this->m_holder.swap_resources(x.m_holder);
2664
+ //And now swap the allocator
2665
+ dtl::bool_<allocator_traits_type::propagate_on_container_swap::value> flag;
2666
+ dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), flag);
2667
+ }
2668
+
2669
+ protected:
2670
+ template<class Vector> //Template it to avoid it in explicit instantiations
2671
+ void prot_swap_small(Vector &x, std::size_t internal_capacity) //version_N
2672
+ {
2673
+ if (BOOST_UNLIKELY(&x == this)){
2674
+ return;
2675
+ }
2676
+
2473
2677
  const bool propagate_alloc = allocator_traits_type::propagate_on_container_swap::value;
2474
- if(are_swap_propagable( this->get_stored_allocator(), this->m_holder.start()
2475
- , x.get_stored_allocator(), x.m_holder.start(), propagate_alloc)){
2476
- //Just swap internals
2477
- this->m_holder.swap_resources(x.m_holder);
2678
+ if(are_swap_propagable<propagate_alloc>
2679
+ ( this->get_stored_allocator(), this->m_holder.start(), x.get_stored_allocator(), x.m_holder.start())){
2680
+ this->priv_swap(x, dtl::false_());
2681
+ return;
2478
2682
  }
2479
- else{
2480
- //Else swap element by element...
2683
+
2684
+ allocator_type &th_al = this->get_stored_allocator();
2685
+ allocator_type &ot_al = x.get_stored_allocator();
2686
+
2687
+ const bool is_this_data_propagable = is_propagable_from<propagate_alloc>(th_al, this->data(), ot_al);
2688
+ const bool is_that_data_propagable = is_propagable_from<propagate_alloc>(ot_al, x.data(), th_al);
2689
+
2690
+ if(internal_capacity && (is_this_data_propagable || is_that_data_propagable)) {
2691
+ //steal memory from src to dst, but move elements from dst to src
2692
+ vector& extmem = is_this_data_propagable ? *this : x;
2693
+ vector& intmem = is_this_data_propagable ? x : *this;
2694
+
2695
+ //Reset extmem to the internal storage and backup data
2696
+ pointer const orig_extdata = extmem.data();
2697
+ const size_type orig_extmem_size = extmem.size();
2698
+ const size_type orig_extmem_cap = extmem.capacity();
2699
+
2700
+ //New safe state for extmem -> empty, internal storage
2701
+ extmem.m_holder.m_start = extmem.get_stored_allocator().internal_storage();
2702
+ extmem.m_holder.set_stored_size(0u);
2703
+ extmem.m_holder.set_stored_capacity(internal_capacity);
2704
+
2705
+ {
2706
+ //Deallocate on exception
2707
+ typename value_traits::ArrayDeallocator new_buffer_deallocator(orig_extdata, extmem.get_stored_allocator(), orig_extmem_cap);
2708
+ typename value_traits::ArrayDestructor new_values_destroyer(orig_extdata, extmem.get_stored_allocator(), orig_extmem_size);
2709
+
2710
+ //Move internal memory data to the internal memory data of the target, this can throw
2711
+ BOOST_ASSERT(extmem.capacity() >= intmem.size());
2712
+ ::boost::container::uninitialized_move_alloc_n
2713
+ (intmem.get_stored_allocator(), this->priv_raw_begin(), intmem.size(), extmem.priv_raw_begin());
2714
+
2715
+ //Exception not thrown, commit new state
2716
+ extmem.m_holder.set_stored_size(intmem.size());
2717
+ //Throwing part passed, disable rollback
2718
+ new_buffer_deallocator.release();
2719
+ new_values_destroyer.release();
2720
+ }
2721
+
2722
+ //Destroy moved elements from intmem
2723
+ boost::container::destroy_alloc_n
2724
+ ( intmem.get_stored_allocator(), this->priv_raw_begin()
2725
+ , intmem.size());
2726
+
2727
+ //Adopt dynamic buffer
2728
+ intmem.m_holder.m_start = orig_extdata;
2729
+ intmem.m_holder.set_stored_size(orig_extmem_size);
2730
+ intmem.m_holder.set_stored_capacity(orig_extmem_cap);
2731
+
2732
+ //And now swap the allocator
2733
+ dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), dtl::bool_<propagate_alloc>());
2734
+ }
2735
+ else { //swap element by element and insert rest
2481
2736
  bool const t_smaller = this->size() < x.size();
2482
2737
  vector &sml = t_smaller ? *this : x;
2483
2738
  vector &big = t_smaller ? x : *this;
2484
2739
 
2740
+ //swap element by element until common size
2485
2741
  size_type const common_elements = sml.size();
2486
2742
  for(size_type i = 0; i != common_elements; ++i){
2487
2743
  boost::adl_move_swap(sml[i], big[i]);
2488
2744
  }
2489
- //... and move-insert the remaining range
2490
- sml.insert( sml.cend()
2491
- , boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(big.nth(common_elements)))
2492
- , boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(big.end()))
2493
- );
2494
- //Destroy remaining elements
2495
- big.erase(big.nth(common_elements), big.cend());
2745
+
2746
+ //And now swap the allocator to be able to construct new elements in sml with the proper allocator
2747
+ dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), dtl::bool_<propagate_alloc>());
2748
+
2749
+ //move-insert the remaining range
2750
+ T *const raw_big_nth = boost::movelib::iterator_to_raw_pointer(big.nth(common_elements));
2751
+ sml.insert(sml.cend()
2752
+ , boost::make_move_iterator(raw_big_nth)
2753
+ , boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(big.end())));
2754
+
2755
+ //Destroy remaining, moved, elements with their original allocator
2756
+ boost::container::destroy_alloc_n
2757
+ ( sml.get_stored_allocator(), raw_big_nth
2758
+ , std::size_t(big.m_holder.m_size - common_elements));
2759
+ big.m_holder.set_stored_size(common_elements);
2496
2760
  }
2497
- //And now swap the allocator
2498
- dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), dtl::bool_<propagate_alloc>());
2499
2761
  }
2762
+ private:
2763
+ inline void priv_move_to_new_buffer(size_type, version_0)
2764
+ { alloc_holder_t::on_capacity_overflow(); }
2500
2765
 
2501
- void priv_reserve_no_capacity(size_type, version_0)
2502
- { throw_bad_alloc(); }
2503
-
2504
- dtl::insert_range_proxy<Allocator, boost::move_iterator<T*>, T*> priv_dummy_empty_proxy()
2766
+ inline dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*> > priv_dummy_empty_proxy()
2505
2767
  {
2506
- return dtl::insert_range_proxy<Allocator, boost::move_iterator<T*>, T*>
2768
+ return dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*> >
2507
2769
  (::boost::make_move_iterator((T *)0));
2508
2770
  }
2509
2771
 
2510
- void priv_reserve_no_capacity(size_type new_cap, version_1)
2772
+ inline void priv_move_to_new_buffer(size_type new_cap, version_1)
2511
2773
  {
2512
2774
  //There is not enough memory, allocate a new buffer
2513
2775
  //Pass the hint so that allocators can take advantage of this.
2514
2776
  pointer const p = this->m_holder.allocate(new_cap);
2777
+ #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2778
+ ++this->num_alloc;
2779
+ #endif
2515
2780
  //We will reuse insert code, so create a dummy input iterator
2516
- this->priv_forward_range_insert_new_allocation
2781
+ this->priv_insert_forward_range_new_allocation
2517
2782
  ( boost::movelib::to_raw_pointer(p), new_cap, this->priv_raw_end(), 0, this->priv_dummy_empty_proxy());
2518
2783
  }
2519
2784
 
2520
- void priv_reserve_no_capacity(size_type new_cap, version_2)
2785
+ void priv_move_to_new_buffer(size_type new_cap, version_2)
2521
2786
  {
2522
2787
  //There is not enough memory, allocate a new
2523
2788
  //buffer or expand the old one.
@@ -2541,38 +2806,24 @@ class vector
2541
2806
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2542
2807
  ++this->num_expand_bwd;
2543
2808
  #endif
2544
- this->priv_forward_range_insert_expand_backwards
2545
- ( new_mem , real_cap, ins_pos, 0, this->priv_dummy_empty_proxy());
2809
+ this->priv_insert_forward_range_expand_backwards
2810
+ ( new_mem, real_cap, ins_pos, 0, this->priv_dummy_empty_proxy());
2546
2811
  }
2547
2812
  else{ //New buffer
2548
2813
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2549
2814
  ++this->num_alloc;
2550
2815
  #endif
2551
- this->priv_forward_range_insert_new_allocation
2816
+ this->priv_insert_forward_range_new_allocation
2552
2817
  ( new_mem, real_cap, ins_pos, 0, this->priv_dummy_empty_proxy());
2553
2818
  }
2554
2819
  }
2555
2820
  }
2556
2821
 
2557
- void priv_destroy_last(const bool moved = false) BOOST_NOEXCEPT_OR_NOTHROW
2558
- {
2559
- (void)moved;
2560
- const bool skip_destructor = value_traits::trivial_dctr || (value_traits::trivial_dctr_after_move && moved);
2561
- if(!skip_destructor){
2562
- value_type* const p = this->priv_raw_end() - 1;
2563
- allocator_traits_type::destroy(this->get_stored_allocator(), p);
2564
- }
2565
- --this->m_holder.m_size;
2566
- }
2567
-
2568
2822
  void priv_destroy_last_n(const size_type n) BOOST_NOEXCEPT_OR_NOTHROW
2569
2823
  {
2570
2824
  BOOST_ASSERT(n <= this->m_holder.m_size);
2571
- if(!value_traits::trivial_dctr){
2572
- T* const destroy_pos = this->priv_raw_begin() + (this->m_holder.m_size-n);
2573
- boost::container::destroy_alloc_n(this->get_stored_allocator(), destroy_pos, n);
2574
- }
2575
- this->m_holder.m_size -= n;
2825
+ boost::container::destroy_alloc_n(this->get_stored_allocator(), this->priv_raw_end() - n, n);
2826
+ this->m_holder.dec_stored_size(n);
2576
2827
  }
2577
2828
 
2578
2829
  template<class InpIt>
@@ -2580,7 +2831,7 @@ class vector
2580
2831
  {
2581
2832
  T* const old_end_pos = this->priv_raw_end();
2582
2833
  T* const new_end_pos = boost::container::uninitialized_copy_alloc(this->m_holder.alloc(), first, last, old_end_pos);
2583
- this->m_holder.m_size += new_end_pos - old_end_pos;
2834
+ this->m_holder.inc_stored_size(static_cast<size_type>(new_end_pos - old_end_pos));
2584
2835
  }
2585
2836
 
2586
2837
  void priv_destroy_all() BOOST_NOEXCEPT_OR_NOTHROW
@@ -2591,59 +2842,69 @@ class vector
2591
2842
  }
2592
2843
 
2593
2844
  template<class U>
2594
- iterator priv_insert(const const_iterator &p, BOOST_FWD_REF(U) x)
2845
+ inline iterator priv_insert(const const_iterator &p, BOOST_FWD_REF(U) u)
2595
2846
  {
2596
- BOOST_ASSERT(this->priv_in_range_or_end(p));
2597
- return this->priv_forward_range_insert
2598
- ( vector_iterator_get_ptr(p), 1, dtl::get_insert_value_proxy<T*, Allocator>(::boost::forward<U>(x)));
2847
+ return this->emplace(p, ::boost::forward<U>(u));
2599
2848
  }
2600
2849
 
2601
- dtl::insert_copy_proxy<Allocator, T*> priv_single_insert_proxy(const T &x)
2602
- { return dtl::insert_copy_proxy<Allocator, T*> (x); }
2603
-
2604
- dtl::insert_move_proxy<Allocator, T*> priv_single_insert_proxy(BOOST_RV_REF(T) x)
2605
- { return dtl::insert_move_proxy<Allocator, T*> (x); }
2606
-
2607
2850
  template <class U>
2608
- void priv_push_back(BOOST_FWD_REF(U) u)
2851
+ inline void priv_push_back(BOOST_FWD_REF(U) u)
2609
2852
  {
2610
- if (BOOST_LIKELY(this->room_enough())){
2611
- //There is more memory, just construct a new object at the end
2612
- allocator_traits_type::construct
2613
- ( this->m_holder.alloc(), this->priv_raw_end(), ::boost::forward<U>(u) );
2614
- ++this->m_holder.m_size;
2615
- }
2616
- else{
2617
- this->priv_forward_range_insert_no_capacity
2618
- ( this->back_ptr(), 1
2619
- , this->priv_single_insert_proxy(::boost::forward<U>(u)), alloc_version());
2620
- }
2853
+ this->emplace_back(::boost::forward<U>(u));
2621
2854
  }
2622
2855
 
2623
- BOOST_CONTAINER_FORCEINLINE dtl::insert_n_copies_proxy<Allocator, T*> priv_resize_proxy(const T &x)
2624
- { return dtl::insert_n_copies_proxy<Allocator, T*>(x); }
2856
+ //Overload to support compiler errors that instantiate too much
2857
+ inline void priv_push_back(::boost::move_detail::nat)
2858
+ {}
2625
2859
 
2626
- BOOST_CONTAINER_FORCEINLINE dtl::insert_default_initialized_n_proxy<Allocator, T*> priv_resize_proxy(default_init_t)
2627
- { return dtl::insert_default_initialized_n_proxy<Allocator, T*>(); }
2860
+ inline iterator priv_insert(const_iterator, ::boost::move_detail::nat)
2861
+ { return iterator(); }
2628
2862
 
2629
- BOOST_CONTAINER_FORCEINLINE dtl::insert_value_initialized_n_proxy<Allocator, T*> priv_resize_proxy(value_init_t)
2630
- { return dtl::insert_value_initialized_n_proxy<Allocator, T*>(); }
2863
+ inline dtl::insert_n_copies_proxy<allocator_type> priv_resize_proxy(const T &x)
2864
+ { return dtl::insert_n_copies_proxy<allocator_type>(x); }
2631
2865
 
2632
- template <class U>
2633
- void priv_resize(size_type new_size, const U& u)
2866
+ inline dtl::insert_default_initialized_n_proxy<allocator_type> priv_resize_proxy(default_init_t)
2867
+ { return dtl::insert_default_initialized_n_proxy<allocator_type>(); }
2868
+
2869
+ inline dtl::insert_value_initialized_n_proxy<allocator_type> priv_resize_proxy(value_init_t)
2870
+ { return dtl::insert_value_initialized_n_proxy<allocator_type>(); }
2871
+
2872
+ protected:
2873
+ void prot_shrink_to_fit_small(pointer const small_buffer, const size_type small_capacity)
2634
2874
  {
2635
- const size_type sz = this->size();
2636
- if (new_size < sz){
2637
- //Destroy last elements
2638
- this->priv_destroy_last_n(sz - new_size);
2639
- }
2640
- else{
2641
- const size_type n = new_size - this->size();
2642
- this->priv_forward_range_insert_at_end(n, this->priv_resize_proxy(u), alloc_version());
2875
+ const size_type cp = this->m_holder.capacity();
2876
+ if (cp && this->m_holder.m_start != small_buffer) { //Do something only if a dynamic buffer is used
2877
+ const size_type sz = this->size();
2878
+ if (!sz) {
2879
+ if (BOOST_LIKELY(!!this->m_holder.m_start))
2880
+ this->m_holder.deallocate(this->m_holder.m_start, cp);
2881
+ this->m_holder.m_start = small_buffer;
2882
+ this->m_holder.set_stored_capacity(small_capacity);
2883
+ }
2884
+ else if(sz <= small_capacity) {
2885
+ T *const oldbuf = boost::movelib::to_raw_pointer(this->m_holder.m_start);
2886
+ ::boost::container::uninitialized_move_alloc_n
2887
+ ( this->get_stored_allocator()
2888
+ , oldbuf
2889
+ , sz
2890
+ , boost::movelib::to_raw_pointer(small_buffer)
2891
+ );
2892
+ boost::container::destroy_alloc_n(this->get_stored_allocator(), oldbuf, sz);
2893
+
2894
+ if (BOOST_LIKELY(!!this->m_holder.m_start))
2895
+ this->m_holder.deallocate(this->m_holder.m_start, cp);
2896
+
2897
+ this->m_holder.m_start = small_buffer;
2898
+ this->m_holder.set_stored_capacity(small_capacity);
2899
+ }
2900
+ else if (sz < cp) {
2901
+ this->priv_move_to_new_buffer(sz, alloc_version());
2902
+ }
2643
2903
  }
2644
2904
  }
2645
2905
 
2646
- BOOST_CONTAINER_FORCEINLINE void priv_shrink_to_fit(version_0) BOOST_NOEXCEPT_OR_NOTHROW
2906
+ private:
2907
+ inline void priv_shrink_to_fit(version_0) BOOST_NOEXCEPT_OR_NOTHROW
2647
2908
  {}
2648
2909
 
2649
2910
  void priv_shrink_to_fit(version_1)
@@ -2652,22 +2913,13 @@ class vector
2652
2913
  if(cp){
2653
2914
  const size_type sz = this->size();
2654
2915
  if(!sz){
2655
- this->m_holder.deallocate(this->m_holder.m_start, cp);
2916
+ if(BOOST_LIKELY(!!this->m_holder.m_start))
2917
+ this->m_holder.deallocate(this->m_holder.m_start, cp);
2656
2918
  this->m_holder.m_start = pointer();
2657
2919
  this->m_holder.m_capacity = 0;
2658
2920
  }
2659
2921
  else if(sz < cp){
2660
- //Allocate a new buffer.
2661
- //Pass the hint so that allocators can take advantage of this.
2662
- pointer const p = this->m_holder.allocate(sz);
2663
-
2664
- //We will reuse insert code, so create a dummy input iterator
2665
- #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2666
- ++this->num_alloc;
2667
- #endif
2668
- this->priv_forward_range_insert_new_allocation
2669
- ( boost::movelib::to_raw_pointer(p), sz
2670
- , this->priv_raw_begin(), 0, this->priv_dummy_empty_proxy());
2922
+ this->priv_move_to_new_buffer(sz, alloc_version());
2671
2923
  }
2672
2924
  }
2673
2925
  }
@@ -2678,7 +2930,8 @@ class vector
2678
2930
  if(cp){
2679
2931
  const size_type sz = this->size();
2680
2932
  if(!sz){
2681
- this->m_holder.deallocate(this->m_holder.m_start, cp);
2933
+ if(BOOST_LIKELY(!!this->m_holder.m_start))
2934
+ this->m_holder.deallocate(this->m_holder.m_start, cp);
2682
2935
  this->m_holder.m_start = pointer();
2683
2936
  this->m_holder.m_capacity = 0;
2684
2937
  }
@@ -2696,21 +2949,26 @@ class vector
2696
2949
  }
2697
2950
  }
2698
2951
 
2952
+ #ifdef _MSC_VER
2953
+ #pragma warning (push)
2954
+ #pragma warning(disable: 4702) //Disable unreachable code warning
2955
+ #endif
2699
2956
  template <class InsertionProxy>
2700
- iterator priv_forward_range_insert_no_capacity
2701
- (const pointer &pos, const size_type, const InsertionProxy , version_0)
2957
+ inline iterator priv_insert_forward_range_no_capacity
2958
+ (T * const, const size_type, const InsertionProxy , version_0)
2702
2959
  {
2703
- throw_bad_alloc();
2704
- return iterator(pos);
2960
+ return alloc_holder_t::on_capacity_overflow(), iterator();
2705
2961
  }
2962
+ #ifdef _MSC_VER
2963
+ #pragma warning (pop)
2964
+ #endif
2706
2965
 
2707
2966
  template <class InsertionProxy>
2708
- iterator priv_forward_range_insert_no_capacity
2709
- (const pointer &pos, const size_type n, const InsertionProxy insert_range_proxy, version_1)
2967
+ BOOST_CONTAINER_NOINLINE iterator priv_insert_forward_range_no_capacity
2968
+ (T *const raw_pos, const size_type n, const InsertionProxy insert_range_proxy, version_1)
2710
2969
  {
2711
2970
  //Check if we have enough memory or try to expand current memory
2712
- const size_type n_pos = pos - this->m_holder.start();
2713
- T *const raw_pos = boost::movelib::to_raw_pointer(pos);
2971
+ const size_type n_pos = static_cast<size_type>(raw_pos - this->priv_raw_begin());
2714
2972
 
2715
2973
  const size_type new_cap = this->m_holder.template next_capacity<growth_factor_type>(n);
2716
2974
  //Pass the hint so that allocators can take advantage of this.
@@ -2718,25 +2976,23 @@ class vector
2718
2976
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2719
2977
  ++this->num_alloc;
2720
2978
  #endif
2721
- this->priv_forward_range_insert_new_allocation
2722
- ( new_buf, new_cap, raw_pos, n, insert_range_proxy);
2723
- return iterator(this->m_holder.start() + n_pos);
2979
+ this->priv_insert_forward_range_new_allocation(new_buf, new_cap, raw_pos, n, insert_range_proxy);
2980
+ return iterator(this->m_holder.start() + difference_type(n_pos));
2724
2981
  }
2725
2982
 
2726
2983
  template <class InsertionProxy>
2727
- iterator priv_forward_range_insert_no_capacity
2728
- (const pointer &pos, const size_type n, const InsertionProxy insert_range_proxy, version_2)
2984
+ BOOST_CONTAINER_NOINLINE iterator priv_insert_forward_range_no_capacity
2985
+ (T *const raw_pos, const size_type n, const InsertionProxy insert_range_proxy, version_2)
2729
2986
  {
2730
2987
  //Check if we have enough memory or try to expand current memory
2731
- T *const raw_pos = boost::movelib::to_raw_pointer(pos);
2732
- const size_type n_pos = raw_pos - this->priv_raw_begin();
2988
+ const size_type n_pos = size_type(raw_pos - this->priv_raw_begin());
2733
2989
 
2734
2990
  //There is not enough memory, allocate a new
2735
2991
  //buffer or expand the old one.
2736
2992
  size_type real_cap = this->m_holder.template next_capacity<growth_factor_type>(n);
2737
2993
  pointer reuse(this->m_holder.start());
2738
2994
  pointer const ret (this->m_holder.allocation_command
2739
- (allocate_new | expand_fwd | expand_bwd, this->m_holder.m_size + n, real_cap, reuse));
2995
+ (allocate_new | expand_fwd | expand_bwd, size_type(this->m_holder.m_size + n), real_cap, reuse));
2740
2996
 
2741
2997
  //Buffer reallocated
2742
2998
  if(reuse){
@@ -2747,14 +3003,15 @@ class vector
2747
3003
  #endif
2748
3004
  this->m_holder.capacity(real_cap);
2749
3005
  //Expand forward
2750
- this->priv_forward_range_insert_expand_forward(raw_pos, n, insert_range_proxy);
3006
+ this->priv_insert_forward_range_expand_forward
3007
+ (raw_pos, n, insert_range_proxy, dtl::bool_<dtl::is_single_value_proxy<InsertionProxy>::value>());
2751
3008
  }
2752
3009
  //Backwards (and possibly forward) expansion
2753
3010
  else{
2754
3011
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2755
3012
  ++this->num_expand_bwd;
2756
3013
  #endif
2757
- this->priv_forward_range_insert_expand_backwards
3014
+ this->priv_insert_forward_range_expand_backwards
2758
3015
  (boost::movelib::to_raw_pointer(ret), real_cap, raw_pos, n, insert_range_proxy);
2759
3016
  }
2760
3017
  }
@@ -2763,54 +3020,61 @@ class vector
2763
3020
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
2764
3021
  ++this->num_alloc;
2765
3022
  #endif
2766
- this->priv_forward_range_insert_new_allocation
3023
+ this->priv_insert_forward_range_new_allocation
2767
3024
  ( boost::movelib::to_raw_pointer(ret), real_cap, raw_pos, n, insert_range_proxy);
2768
3025
  }
2769
3026
 
2770
- return iterator(this->m_holder.start() + n_pos);
3027
+ return iterator(this->m_holder.start() + (difference_type)(n_pos));
2771
3028
  }
2772
3029
 
2773
3030
  template <class InsertionProxy>
2774
- iterator priv_forward_range_insert
3031
+ inline iterator priv_insert_forward_range
2775
3032
  (const pointer &pos, const size_type n, const InsertionProxy insert_range_proxy)
2776
3033
  {
2777
3034
  BOOST_ASSERT(this->m_holder.capacity() >= this->m_holder.m_size);
3035
+ T *const p = boost::movelib::to_raw_pointer(pos);
2778
3036
  //Check if we have enough memory or try to expand current memory
2779
- const size_type remaining = this->m_holder.capacity() - this->m_holder.m_size;
2780
-
2781
- bool same_buffer_start = n <= remaining;
2782
- if (!same_buffer_start){
2783
- return priv_forward_range_insert_no_capacity(pos, n, insert_range_proxy, alloc_version());
3037
+ if (BOOST_LIKELY(n <= (this->m_holder.capacity() - this->m_holder.m_size))){
3038
+ //Expand forward
3039
+ this->priv_insert_forward_range_expand_forward
3040
+ (p, n, insert_range_proxy, dtl::bool_<dtl::is_single_value_proxy<InsertionProxy>::value>());
3041
+ return iterator(pos);
2784
3042
  }
2785
3043
  else{
2786
- //Expand forward
2787
- T *const raw_pos = boost::movelib::to_raw_pointer(pos);
2788
- const size_type n_pos = raw_pos - this->priv_raw_begin();
2789
- this->priv_forward_range_insert_expand_forward(raw_pos, n, insert_range_proxy);
2790
- return iterator(this->m_holder.start() + n_pos);
3044
+ return this->priv_insert_forward_range_no_capacity(p, n, insert_range_proxy, alloc_version());
2791
3045
  }
2792
3046
  }
2793
3047
 
2794
- template <class InsertionProxy>
2795
- iterator priv_forward_range_insert_at_end
2796
- (const size_type n, const InsertionProxy insert_range_proxy, version_0)
3048
+ template <class U>
3049
+ void priv_resize(const size_type new_size, const U &u, version_0)
2797
3050
  {
2798
- //Check if we have enough memory or try to expand current memory
2799
- const size_type remaining = this->m_holder.capacity() - this->m_holder.m_size;
2800
-
2801
- if (n > remaining){
3051
+ const size_type sz = this->m_holder.m_size;
3052
+ if (new_size > this->capacity()){
2802
3053
  //This will trigger an error
2803
- throw_bad_alloc();
3054
+ alloc_holder_t::on_capacity_overflow();
3055
+ }
3056
+ else if (new_size < sz){
3057
+ //Destroy last elements
3058
+ this->priv_destroy_last_n(sz - new_size);
3059
+ }
3060
+ else{
3061
+ T* const old_finish = this->priv_raw_end();
3062
+ this->priv_resize_proxy(u).uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, new_size - sz);
3063
+ this->m_holder.set_stored_size(new_size);
2804
3064
  }
2805
- this->priv_forward_range_insert_at_end_expand_forward(n, insert_range_proxy);
2806
- return this->end();
2807
3065
  }
2808
3066
 
2809
- template <class InsertionProxy, class AllocVersion>
2810
- BOOST_CONTAINER_FORCEINLINE iterator priv_forward_range_insert_at_end
2811
- (const size_type n, const InsertionProxy insert_range_proxy, AllocVersion)
3067
+ template <class U, class AllocVersion>
3068
+ void priv_resize(const size_type new_size, const U &u, AllocVersion)
2812
3069
  {
2813
- return this->priv_forward_range_insert(this->back_ptr(), n, insert_range_proxy);
3070
+ const size_type sz = this->m_holder.m_size;
3071
+ if (new_size < sz){
3072
+ //Destroy last elements
3073
+ this->priv_destroy_last_n(size_type(sz - new_size));
3074
+ }
3075
+ else {
3076
+ this->priv_insert_forward_range(this->back_ptr(), size_type(new_size - sz), this->priv_resize_proxy(u));
3077
+ }
2814
3078
  }
2815
3079
 
2816
3080
  //Takes the range pointed by [first_pos, last_pos) and shifts it to the right
@@ -2885,7 +3149,9 @@ class vector
2885
3149
  //All uninitialized_moved
2886
3150
  ::boost::container::uninitialized_move_alloc
2887
3151
  (this->m_holder.alloc(), first_ptr, last_ptr, first_ptr + shift_count);
2888
- hole_size = first_pos + shift_count - limit_pos;
3152
+ //Cast in case size_type is narrower than int, promotions are applied
3153
+ //and Wconversion is in place
3154
+ hole_size = static_cast<size_type>(first_pos + shift_count - limit_pos);
2889
3155
  }
2890
3156
  //Case C:
2891
3157
  else{
@@ -2900,426 +3166,92 @@ class vector
2900
3166
  }
2901
3167
 
2902
3168
  private:
2903
- BOOST_CONTAINER_FORCEINLINE T *priv_raw_begin() const
3169
+ inline T *priv_raw_begin() const
2904
3170
  { return boost::movelib::to_raw_pointer(m_holder.start()); }
2905
3171
 
2906
- BOOST_CONTAINER_FORCEINLINE T* priv_raw_end() const
3172
+ inline T* priv_raw_end() const
2907
3173
  { return this->priv_raw_begin() + this->m_holder.m_size; }
2908
3174
 
2909
- template <class InsertionProxy>
2910
- void priv_forward_range_insert_at_end_expand_forward(const size_type n, InsertionProxy insert_range_proxy)
2911
- {
2912
- T* const old_finish = this->priv_raw_end();
2913
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n);
2914
- this->m_holder.m_size += n;
2915
- }
2916
-
2917
- template <class InsertionProxy>
2918
- void priv_forward_range_insert_expand_forward(T* const pos, const size_type n, InsertionProxy insert_range_proxy)
3175
+ template <class InsertionProxy> //inline single-element version as it is significantly smaller
3176
+ inline void priv_insert_forward_range_expand_forward
3177
+ (T* const raw_pos, const size_type, InsertionProxy insert_range_proxy, dtl::true_type)
2919
3178
  {
2920
- //n can't be 0, because there is nothing to do in that case
2921
- if(BOOST_UNLIKELY(!n)) return;
3179
+ BOOST_ASSERT(this->room_enough());
2922
3180
  //There is enough memory
2923
3181
  T* const old_finish = this->priv_raw_end();
2924
- const size_type elems_after = old_finish - pos;
3182
+ allocator_type & a = this->m_holder.alloc();
2925
3183
 
2926
- if (!elems_after){
2927
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n);
2928
- this->m_holder.m_size += n;
3184
+ if (old_finish == raw_pos){
3185
+ insert_range_proxy.uninitialized_copy_n_and_update(a, old_finish, 1);
3186
+ ++this->m_holder.m_size;
2929
3187
  }
2930
- else if (elems_after >= n){
3188
+ else{
2931
3189
  //New elements can be just copied.
2932
3190
  //Move to uninitialized memory last objects
2933
- ::boost::container::uninitialized_move_alloc
2934
- (this->m_holder.alloc(), old_finish - n, old_finish, old_finish);
2935
- this->m_holder.m_size += n;
3191
+ T * const before_old_finish = old_finish-1;
3192
+
3193
+ allocator_traits_type::construct(a, old_finish, ::boost::move(*before_old_finish));
3194
+ ++this->m_holder.m_size;
2936
3195
  //Copy previous to last objects to the initialized end
2937
- boost::container::move_backward(pos, old_finish - n, old_finish);
2938
- //Insert new objects in the pos
2939
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, n);
2940
- }
2941
- else {
2942
- //The new elements don't fit in the [pos, end()) range.
2943
-
2944
- //Copy old [pos, end()) elements to the uninitialized memory (a gap is created)
2945
- ::boost::container::uninitialized_move_alloc(this->m_holder.alloc(), pos, old_finish, pos + n);
2946
- BOOST_TRY{
2947
- //Copy first new elements in pos (gap is still there)
2948
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, elems_after);
2949
- //Copy to the beginning of the unallocated zone the last new elements (the gap is closed).
2950
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n - elems_after);
2951
- this->m_holder.m_size += n;
2952
- }
2953
- BOOST_CATCH(...){
2954
- boost::container::destroy_alloc_n(this->get_stored_allocator(), pos + n, elems_after);
2955
- BOOST_RETHROW
2956
- }
2957
- BOOST_CATCH_END
3196
+ boost::container::move_backward(raw_pos, before_old_finish, old_finish);
3197
+ //Insert new objects in the raw_pos
3198
+ insert_range_proxy.copy_n_and_update(a, raw_pos, 1);
2958
3199
  }
2959
3200
  }
2960
3201
 
2961
3202
  template <class InsertionProxy>
2962
- void priv_forward_range_insert_new_allocation
3203
+ inline void priv_insert_forward_range_expand_forward
3204
+ (T* const raw_pos, const size_type n, InsertionProxy insert_range_proxy, dtl::false_type)
3205
+ {
3206
+ //There is enough memory
3207
+ boost::container::expand_forward_and_insert_alloc
3208
+ ( this->m_holder.alloc(), raw_pos, this->priv_raw_end(), n, insert_range_proxy);
3209
+ this->m_holder.inc_stored_size(n);
3210
+ }
3211
+
3212
+ template <class InsertionProxy>
3213
+ void priv_insert_forward_range_new_allocation
2963
3214
  (T* const new_start, size_type new_cap, T* const pos, const size_type n, InsertionProxy insert_range_proxy)
2964
3215
  {
2965
3216
  //n can be zero, if we want to reallocate!
2966
- T *new_finish = new_start;
2967
- T *old_finish;
2968
- //Anti-exception rollbacks
2969
- typename value_traits::ArrayDeallocator new_buffer_deallocator(new_start, this->m_holder.alloc(), new_cap);
2970
- typename value_traits::ArrayDestructor new_values_destroyer(new_start, this->m_holder.alloc(), 0u);
2971
-
2972
- //Initialize with [begin(), pos) old buffer
2973
- //the start of the new buffer
2974
- T * const old_buffer = this->priv_raw_begin();
2975
- if(old_buffer){
2976
- new_finish = ::boost::container::uninitialized_move_alloc
2977
- (this->m_holder.alloc(), this->priv_raw_begin(), pos, old_finish = new_finish);
2978
- new_values_destroyer.increment_size(new_finish - old_finish);
2979
- }
2980
- //Initialize new objects, starting from previous point
2981
- old_finish = new_finish;
2982
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n);
2983
- new_finish += n;
2984
- new_values_destroyer.increment_size(new_finish - old_finish);
2985
- //Initialize from the rest of the old buffer,
2986
- //starting from previous point
2987
- if(old_buffer){
2988
- new_finish = ::boost::container::uninitialized_move_alloc
2989
- (this->m_holder.alloc(), pos, old_buffer + this->m_holder.m_size, new_finish);
2990
- //Destroy and deallocate old elements
2991
- //If there is allocated memory, destroy and deallocate
2992
- if(!value_traits::trivial_dctr_after_move)
2993
- boost::container::destroy_alloc_n(this->get_stored_allocator(), old_buffer, this->m_holder.m_size);
3217
+ allocator_type &a = this->m_holder.alloc();
3218
+ T * const raw_old_buffer = this->priv_raw_begin();
3219
+
3220
+ typename value_traits::ArrayDeallocator new_buffer_deallocator(new_start, a, new_cap);
3221
+ boost::container::uninitialized_move_and_insert_alloc
3222
+ (a, raw_old_buffer, pos, this->priv_raw_end(), new_start, n, insert_range_proxy);
3223
+ new_buffer_deallocator.release();
3224
+
3225
+ //Destroy and deallocate old elements
3226
+ if(raw_old_buffer){
3227
+ BOOST_IF_CONSTEXPR(!has_trivial_destructor_after_move<value_type>::value)
3228
+ boost::container::destroy_alloc_n(a, raw_old_buffer, this->m_holder.m_size);
2994
3229
  this->m_holder.deallocate(this->m_holder.start(), this->m_holder.capacity());
2995
3230
  }
3231
+
2996
3232
  this->m_holder.start(new_start);
2997
- this->m_holder.m_size = size_type(new_finish - new_start);
3233
+ this->m_holder.inc_stored_size(n);
2998
3234
  this->m_holder.capacity(new_cap);
2999
- //All construction successful, disable rollbacks
3000
- new_values_destroyer.release();
3001
- new_buffer_deallocator.release();
3002
3235
  }
3003
3236
 
3004
3237
  template <class InsertionProxy>
3005
- void priv_forward_range_insert_expand_backwards
3238
+ void priv_insert_forward_range_expand_backwards
3006
3239
  (T* const new_start, const size_type new_capacity,
3007
3240
  T* const pos, const size_type n, InsertionProxy insert_range_proxy)
3008
3241
  {
3009
- //n can be zero to just expand capacity
3010
- //Backup old data
3011
- T* const old_start = this->priv_raw_begin();
3242
+ T* const old_start = this->priv_raw_begin();
3012
3243
  const size_type old_size = this->m_holder.m_size;
3013
- T* const old_finish = old_start + old_size;
3014
-
3015
- //We can have 8 possibilities:
3016
- const size_type elemsbefore = static_cast<size_type>(pos - old_start);
3017
- const size_type s_before = static_cast<size_type>(old_start - new_start);
3018
- const size_type before_plus_new = elemsbefore + n;
3244
+ allocator_type& a = this->m_holder.alloc();
3019
3245
 
3020
3246
  //Update the vector buffer information to a safe state
3021
3247
  this->m_holder.start(new_start);
3022
3248
  this->m_holder.capacity(new_capacity);
3023
3249
  this->m_holder.m_size = 0;
3024
3250
 
3025
- //If anything goes wrong, this object will destroy
3026
- //all the old objects to fulfill previous vector state
3027
- typename value_traits::ArrayDestructor old_values_destroyer(old_start, this->m_holder.alloc(), old_size);
3028
- //Check if s_before is big enough to hold the beginning of old data + new data
3029
- if(s_before >= before_plus_new){
3030
- //Copy first old values before pos, after that the new objects
3031
- T *const new_elem_pos =
3032
- ::boost::container::uninitialized_move_alloc(this->m_holder.alloc(), old_start, pos, new_start);
3033
- this->m_holder.m_size = elemsbefore;
3034
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), new_elem_pos, n);
3035
- this->m_holder.m_size = before_plus_new;
3036
- const size_type new_size = old_size + n;
3037
- //Check if s_before is so big that even copying the old data + new data
3038
- //there is a gap between the new data and the old data
3039
- if(s_before >= new_size){
3040
- //Old situation:
3041
- // _________________________________________________________
3042
- //| raw_mem | old_begin | old_end |
3043
- //| __________________________________|___________|_________|
3044
- //
3045
- //New situation:
3046
- // _________________________________________________________
3047
- //| old_begin | new | old_end | raw_mem |
3048
- //|___________|__________|_________|________________________|
3049
- //
3050
- //Now initialize the rest of memory with the last old values
3051
- if(before_plus_new != new_size){ //Special case to avoid operations in back insertion
3052
- ::boost::container::uninitialized_move_alloc
3053
- (this->m_holder.alloc(), pos, old_finish, new_start + before_plus_new);
3054
- //All new elements correctly constructed, avoid new element destruction
3055
- this->m_holder.m_size = new_size;
3056
- }
3057
- //Old values destroyed automatically with "old_values_destroyer"
3058
- //when "old_values_destroyer" goes out of scope unless the have trivial
3059
- //destructor after move.
3060
- if(value_traits::trivial_dctr_after_move)
3061
- old_values_destroyer.release();
3062
- }
3063
- //s_before is so big that divides old_end
3064
- else{
3065
- //Old situation:
3066
- // __________________________________________________
3067
- //| raw_mem | old_begin | old_end |
3068
- //| ___________________________|___________|_________|
3069
- //
3070
- //New situation:
3071
- // __________________________________________________
3072
- //| old_begin | new | old_end | raw_mem |
3073
- //|___________|__________|_________|_________________|
3074
- //
3075
- //Now initialize the rest of memory with the last old values
3076
- //All new elements correctly constructed, avoid new element destruction
3077
- const size_type raw_gap = s_before - before_plus_new;
3078
- if(!value_traits::trivial_dctr){
3079
- //Now initialize the rest of s_before memory with the
3080
- //first of elements after new values
3081
- ::boost::container::uninitialized_move_alloc_n
3082
- (this->m_holder.alloc(), pos, raw_gap, new_start + before_plus_new);
3083
- //Now we have a contiguous buffer so program trailing element destruction
3084
- //and update size to the final size.
3085
- old_values_destroyer.shrink_forward(new_size-s_before);
3086
- this->m_holder.m_size = new_size;
3087
- //Now move remaining last objects in the old buffer begin
3088
- T * const remaining_pos = pos + raw_gap;
3089
- if(remaining_pos != old_start){ //Make sure data has to be moved
3090
- ::boost::container::move(remaining_pos, old_finish, old_start);
3091
- }
3092
- //Once moved, avoid calling the destructors if trivial after move
3093
- if(value_traits::trivial_dctr_after_move){
3094
- old_values_destroyer.release();
3095
- }
3096
- }
3097
- else{ //If trivial destructor, we can uninitialized copy + copy in a single uninitialized copy
3098
- ::boost::container::uninitialized_move_alloc_n
3099
- (this->m_holder.alloc(), pos, static_cast<size_type>(old_finish - pos), new_start + before_plus_new);
3100
- this->m_holder.m_size = new_size;
3101
- old_values_destroyer.release();
3102
- }
3103
- }
3104
- }
3105
- else{
3106
- //Check if we have to do the insertion in two phases
3107
- //since maybe s_before is not big enough and
3108
- //the buffer was expanded both sides
3109
- //
3110
- //Old situation:
3111
- // _________________________________________________
3112
- //| raw_mem | old_begin + old_end | raw_mem |
3113
- //|_________|_____________________|_________________|
3114
- //
3115
- //New situation with do_after:
3116
- // _________________________________________________
3117
- //| old_begin + new + old_end | raw_mem |
3118
- //|___________________________________|_____________|
3119
- //
3120
- //New without do_after:
3121
- // _________________________________________________
3122
- //| old_begin + new + old_end | raw_mem |
3123
- //|____________________________|____________________|
3124
- //
3125
- const bool do_after = n > s_before;
3126
-
3127
- //Now we can have two situations: the raw_mem of the
3128
- //beginning divides the old_begin, or the new elements:
3129
- if (s_before <= elemsbefore) {
3130
- //The raw memory divides the old_begin group:
3131
- //
3132
- //If we need two phase construction (do_after)
3133
- //new group is divided in new = new_beg + new_end groups
3134
- //In this phase only new_beg will be inserted
3135
- //
3136
- //Old situation:
3137
- // _________________________________________________
3138
- //| raw_mem | old_begin | old_end | raw_mem |
3139
- //|_________|___________|_________|_________________|
3140
- //
3141
- //New situation with do_after(1):
3142
- //This is not definitive situation, the second phase
3143
- //will include
3144
- // _________________________________________________
3145
- //| old_begin | new_beg | old_end | raw_mem |
3146
- //|___________|_________|_________|_________________|
3147
- //
3148
- //New situation without do_after:
3149
- // _________________________________________________
3150
- //| old_begin | new | old_end | raw_mem |
3151
- //|___________|_____|_________|_____________________|
3152
- //
3153
- //Copy the first part of old_begin to raw_mem
3154
- ::boost::container::uninitialized_move_alloc_n
3155
- (this->m_holder.alloc(), old_start, s_before, new_start);
3156
- //The buffer is all constructed until old_end,
3157
- //so program trailing destruction and assign final size
3158
- //if !do_after, s_before+n otherwise.
3159
- size_type new_1st_range;
3160
- if(do_after){
3161
- new_1st_range = s_before;
3162
- //release destroyer and update size
3163
- old_values_destroyer.release();
3164
- }
3165
- else{
3166
- new_1st_range = n;
3167
- if(value_traits::trivial_dctr_after_move)
3168
- old_values_destroyer.release();
3169
- else{
3170
- old_values_destroyer.shrink_forward(old_size - (s_before - n));
3171
- }
3172
- }
3173
- this->m_holder.m_size = old_size + new_1st_range;
3174
- //Now copy the second part of old_begin overwriting itself
3175
- T *const next = ::boost::container::move(old_start + s_before, pos, old_start);
3176
- //Now copy the new_beg elements
3177
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), next, new_1st_range);
3178
-
3179
- //If there is no after work and the last old part needs to be moved to front, do it
3180
- if(!do_after && (n != s_before)){
3181
- //Now displace old_end elements
3182
- ::boost::container::move(pos, old_finish, next + new_1st_range);
3183
- }
3184
- }
3185
- else {
3186
- //If we have to expand both sides,
3187
- //we will play if the first new values so
3188
- //calculate the upper bound of new values
3189
-
3190
- //The raw memory divides the new elements
3191
- //
3192
- //If we need two phase construction (do_after)
3193
- //new group is divided in new = new_beg + new_end groups
3194
- //In this phase only new_beg will be inserted
3195
- //
3196
- //Old situation:
3197
- // _______________________________________________________
3198
- //| raw_mem | old_begin | old_end | raw_mem |
3199
- //|_______________|___________|_________|_________________|
3200
- //
3201
- //New situation with do_after():
3202
- // ____________________________________________________
3203
- //| old_begin | new_beg | old_end | raw_mem |
3204
- //|___________|_______________|_________|______________|
3205
- //
3206
- //New situation without do_after:
3207
- // ______________________________________________________
3208
- //| old_begin | new | old_end | raw_mem |
3209
- //|___________|_____|_________|__________________________|
3210
- //
3211
- //First copy whole old_begin and part of new to raw_mem
3212
- T * const new_pos = ::boost::container::uninitialized_move_alloc
3213
- (this->m_holder.alloc(), old_start, pos, new_start);
3214
- this->m_holder.m_size = elemsbefore;
3215
- const size_type mid_n = s_before - elemsbefore;
3216
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), new_pos, mid_n);
3217
- //The buffer is all constructed until old_end,
3218
- //release destroyer
3219
- this->m_holder.m_size = old_size + s_before;
3220
- old_values_destroyer.release();
3221
-
3222
- if(do_after){
3223
- //Copy new_beg part
3224
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), old_start, elemsbefore);
3225
- }
3226
- else{
3227
- //Copy all new elements
3228
- const size_type rest_new = n - mid_n;
3229
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), old_start, rest_new);
3230
- T* const move_start = old_start + rest_new;
3231
- //Displace old_end, but make sure data has to be moved
3232
- T* const move_end = move_start != pos ? ::boost::container::move(pos, old_finish, move_start)
3233
- : old_finish;
3234
- //Destroy remaining moved elements from old_end except if they
3235
- //have trivial destructor after being moved
3236
- size_type n_destroy = s_before - n;
3237
- if(!value_traits::trivial_dctr_after_move)
3238
- boost::container::destroy_alloc_n(this->get_stored_allocator(), move_end, n_destroy);
3239
- this->m_holder.m_size -= n_destroy;
3240
- }
3241
- }
3251
+ expand_backward_forward_and_insert_alloc(old_start, old_size, new_start, pos, n, insert_range_proxy, a);
3242
3252
 
3243
- //This is only executed if two phase construction is needed
3244
- if(do_after){
3245
- //The raw memory divides the new elements
3246
- //
3247
- //Old situation:
3248
- // ______________________________________________________
3249
- //| raw_mem | old_begin | old_end | raw_mem |
3250
- //|______________|___________|____________|______________|
3251
- //
3252
- //New situation with do_after(1):
3253
- // _______________________________________________________
3254
- //| old_begin + new_beg | new_end |old_end | raw_mem |
3255
- //|__________________________|_________|________|_________|
3256
- //
3257
- //New situation with do_after(2):
3258
- // ______________________________________________________
3259
- //| old_begin + new | old_end |raw |
3260
- //|_______________________________________|_________|____|
3261
- //
3262
- const size_type n_after = n - s_before;
3263
- const size_type elemsafter = old_size - elemsbefore;
3264
-
3265
- //We can have two situations:
3266
- if (elemsafter >= n_after){
3267
- //The raw_mem from end will divide displaced old_end
3268
- //
3269
- //Old situation:
3270
- // ______________________________________________________
3271
- //| raw_mem | old_begin | old_end | raw_mem |
3272
- //|______________|___________|____________|______________|
3273
- //
3274
- //New situation with do_after(1):
3275
- // _______________________________________________________
3276
- //| old_begin + new_beg | new_end |old_end | raw_mem |
3277
- //|__________________________|_________|________|_________|
3278
- //
3279
- //First copy the part of old_end raw_mem
3280
- T* finish_n = old_finish - n_after;
3281
- ::boost::container::uninitialized_move_alloc
3282
- (this->m_holder.alloc(), finish_n, old_finish, old_finish);
3283
- this->m_holder.m_size += n_after;
3284
- //Displace the rest of old_end to the new position
3285
- boost::container::move_backward(pos, finish_n, old_finish);
3286
- //Now overwrite with new_end
3287
- //The new_end part is [first + (n - n_after), last)
3288
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, n_after);
3289
- }
3290
- else {
3291
- //The raw_mem from end will divide new_end part
3292
- //
3293
- //Old situation:
3294
- // _____________________________________________________________
3295
- //| raw_mem | old_begin | old_end | raw_mem |
3296
- //|______________|___________|____________|_____________________|
3297
- //
3298
- //New situation with do_after(2):
3299
- // _____________________________________________________________
3300
- //| old_begin + new_beg | new_end |old_end | raw_mem |
3301
- //|__________________________|_______________|________|_________|
3302
- //
3303
-
3304
- const size_type mid_last_dist = n_after - elemsafter;
3305
- //First initialize data in raw memory
3306
-
3307
- //Copy to the old_end part to the uninitialized zone leaving a gap.
3308
- ::boost::container::uninitialized_move_alloc
3309
- (this->m_holder.alloc(), pos, old_finish, old_finish + mid_last_dist);
3310
-
3311
- typename value_traits::ArrayDestructor old_end_destroyer
3312
- (old_finish + mid_last_dist, this->m_holder.alloc(), old_finish - pos);
3313
-
3314
- //Copy the first part to the already constructed old_end zone
3315
- insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, elemsafter);
3316
- //Copy the rest to the uninitialized zone filling the gap
3317
- insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, mid_last_dist);
3318
- this->m_holder.m_size += n_after;
3319
- old_end_destroyer.release();
3320
- }
3321
- }
3322
- }
3253
+ //Update the vector buffer information to a safe state
3254
+ this->m_holder.m_size = stored_size_type(old_size + n);
3323
3255
  }
3324
3256
 
3325
3257
  void priv_throw_if_out_of_range(size_type n) const
@@ -3330,12 +3262,12 @@ class vector
3330
3262
  }
3331
3263
  }
3332
3264
 
3333
- BOOST_CONTAINER_FORCEINLINE bool priv_in_range(const_iterator pos) const
3265
+ inline bool priv_in_range(const_iterator pos) const
3334
3266
  {
3335
3267
  return (this->begin() <= pos) && (pos < this->end());
3336
3268
  }
3337
3269
 
3338
- BOOST_CONTAINER_FORCEINLINE bool priv_in_range_or_end(const_iterator pos) const
3270
+ inline bool priv_in_range_or_end(const_iterator pos) const
3339
3271
  {
3340
3272
  return (this->begin() <= pos) && (pos <= this->end());
3341
3273
  }
@@ -3352,6 +3284,19 @@ class vector
3352
3284
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
3353
3285
  };
3354
3286
 
3287
+ #ifndef BOOST_CONTAINER_NO_CXX17_CTAD
3288
+
3289
+ template <typename InputIterator>
3290
+ vector(InputIterator, InputIterator) ->
3291
+ vector<typename iter_value<InputIterator>::type>;
3292
+
3293
+ template <typename InputIterator, typename Allocator>
3294
+ vector(InputIterator, InputIterator, Allocator const&) ->
3295
+ vector<typename iter_value<InputIterator>::type, Allocator>;
3296
+
3297
+ #endif
3298
+
3299
+
3355
3300
  }} //namespace boost::container
3356
3301
 
3357
3302
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
@@ -3360,16 +3305,31 @@ namespace boost {
3360
3305
 
3361
3306
  //!has_trivial_destructor_after_move<> == true_type
3362
3307
  //!specialization for optimizations
3363
- template <class T, class Allocator>
3364
- struct has_trivial_destructor_after_move<boost::container::vector<T, Allocator> >
3308
+ template <class T, class Allocator, class Options>
3309
+ struct has_trivial_destructor_after_move<boost::container::vector<T, Allocator, Options> >
3365
3310
  {
3366
- typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
3367
- static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
3368
- ::boost::has_trivial_destructor_after_move<pointer>::value;
3311
+ typedef typename boost::container::vector<T, Allocator, Options>::allocator_type allocator_type;
3312
+ typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
3313
+ BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
3314
+ ::boost::has_trivial_destructor_after_move<pointer>::value;
3369
3315
  };
3370
3316
 
3371
3317
  }
3372
3318
 
3319
+ //See comments on vec_iterator::element_type to know why is this needed
3320
+ #ifdef BOOST_GNU_STDLIB
3321
+
3322
+ BOOST_MOVE_STD_NS_BEG
3323
+
3324
+ template <class Pointer, bool IsConst>
3325
+ struct pointer_traits< boost::container::vec_iterator<Pointer, IsConst> >
3326
+ : public boost::intrusive::pointer_traits< boost::container::vec_iterator<Pointer, IsConst> >
3327
+ {};
3328
+
3329
+ BOOST_MOVE_STD_NS_END
3330
+
3331
+ #endif //BOOST_GNU_STDLIB
3332
+
3373
3333
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
3374
3334
 
3375
3335
  #include <boost/container/detail/config_end.hpp>