passenger 6.0.14 → 6.0.27

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 (1978) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +380 -85
  3. data/CONTRIBUTING.md +2 -2
  4. data/CONTRIBUTORS +8 -0
  5. data/LICENSE +1 -1
  6. data/README.md +3 -3
  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 +24 -8
  12. data/bin/passenger-memory-stats +2 -2
  13. data/bin/passenger-status +2 -2
  14. data/build/agent.rb +2 -4
  15. data/build/apache2.rb +3 -3
  16. data/build/basics.rb +14 -6
  17. data/build/common_library.rb +3 -8
  18. data/build/cxx_tests.rb +20 -9
  19. data/build/integration_tests.rb +10 -9
  20. data/build/misc.rb +2 -4
  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 +2 -2
  25. data/build/ruby_extension.rb +2 -2
  26. data/build/ruby_tests.rb +3 -3
  27. data/build/schema_printer.rb +2 -4
  28. data/build/support/cplusplus.rb +2 -2
  29. data/build/support/cxx_dependency_map.rb +249 -311
  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 +2 -2
  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 +27 -13
  39. data/dev/copy_boost_headers +96 -77
  40. data/dev/index_cxx_dependencies.rb +1 -1
  41. data/dev/nginx_version_sha256 +72 -0
  42. data/doc/AiInstructions.md +112 -0
  43. data/doc/CxxMockingStrategy.md +42 -0
  44. data/doc/CxxTestingGuide.md +110 -0
  45. data/doc/DesignAspects/LimitedGemDependencies.md +47 -0
  46. data/doc/DesignAspects/NoGemActivationDuringRubyLoaderInitialization.md +27 -0
  47. data/doc/TempFileHandling.md +15 -0
  48. data/package.json +15 -15
  49. data/passenger.gemspec +8 -2
  50. data/resources/templates/apache2/deployment_example.txt.erb +1 -1
  51. data/resources/templates/nginx/deployment_example.txt.erb +1 -1
  52. data/resources/templates/standalone/http.erb +1 -0
  53. data/resources/templates/standalone/server.erb +2 -0
  54. data/src/agent/AgentMain.cpp +4 -10
  55. data/src/agent/Core/ApiServer.h +3 -4
  56. data/src/agent/Core/ApplicationPool/AbstractSession.h +12 -3
  57. data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +2 -2
  58. data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +2 -2
  59. data/src/agent/Core/ApplicationPool/Common.h +2 -2
  60. data/src/agent/Core/ApplicationPool/Context.h +7 -4
  61. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +10 -2
  62. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +12 -4
  63. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +10 -2
  64. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +11 -2
  65. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +11 -2
  66. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +85 -5
  67. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +66 -21
  68. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +10 -2
  69. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +11 -3
  70. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +10 -2
  71. data/src/agent/Core/ApplicationPool/Group.h +18 -8
  72. data/src/agent/Core/ApplicationPool/Implementation.cpp +2 -5
  73. data/src/agent/Core/ApplicationPool/Options.h +3 -4
  74. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +7 -2
  75. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +7 -2
  76. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +7 -2
  77. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +7 -2
  78. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +7 -2
  79. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +7 -2
  80. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +7 -2
  81. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +17 -3
  82. data/src/agent/Core/ApplicationPool/Pool.h +2 -4
  83. data/src/agent/Core/ApplicationPool/Process.cpp +2 -2
  84. data/src/agent/Core/ApplicationPool/Process.h +24 -8
  85. data/src/agent/Core/ApplicationPool/Session.h +22 -22
  86. data/src/agent/Core/ApplicationPool/Socket.h +17 -7
  87. data/src/agent/Core/ApplicationPool/TestSession.h +76 -17
  88. data/src/agent/Core/Config.h +17 -40
  89. data/src/agent/Core/ConfigChange.cpp +3 -43
  90. data/src/agent/Core/ConfigChange.h +2 -2
  91. data/src/agent/Core/Controller/AppResponse.h +2 -3
  92. data/src/agent/Core/Controller/BufferBody.cpp +2 -2
  93. data/src/agent/Core/Controller/CheckoutSession.cpp +125 -16
  94. data/src/agent/Core/Controller/Client.h +2 -3
  95. data/src/agent/Core/Controller/Config.cpp +2 -2
  96. data/src/agent/Core/Controller/Config.h +14 -5
  97. data/src/agent/Core/Controller/ForwardResponse.cpp +2 -2
  98. data/src/agent/Core/Controller/Hooks.cpp +15 -2
  99. data/src/agent/Core/Controller/Implementation.cpp +2 -2
  100. data/src/agent/Core/Controller/InitRequest.cpp +4 -3
  101. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +2 -2
  102. data/src/agent/Core/Controller/InternalUtils.cpp +14 -2
  103. data/src/agent/Core/Controller/Miscellaneous.cpp +2 -2
  104. data/src/agent/Core/Controller/Request.h +5 -4
  105. data/src/agent/Core/Controller/SendRequest.cpp +4 -4
  106. data/src/agent/Core/Controller/StateInspection.cpp +2 -2
  107. data/src/agent/Core/Controller/TurboCaching.h +2 -2
  108. data/src/agent/Core/Controller.h +15 -15
  109. data/src/agent/Core/CoreMain.cpp +14 -75
  110. data/src/agent/Core/OptionParser.h +11 -9
  111. data/src/agent/Core/ResponseCache.h +5 -4
  112. data/src/agent/Core/SecurityUpdateChecker.h +7 -8
  113. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +2 -2
  114. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +2 -2
  115. data/src/agent/Core/SpawningKit/Config.h +2 -2
  116. data/src/agent/Core/SpawningKit/Context.h +2 -2
  117. data/src/agent/Core/SpawningKit/DirectSpawner.h +2 -2
  118. data/src/agent/Core/SpawningKit/DummySpawner.h +2 -2
  119. data/src/agent/Core/SpawningKit/ErrorRenderer.h +7 -2
  120. data/src/agent/Core/SpawningKit/Exceptions.h +2 -2
  121. data/src/agent/Core/SpawningKit/Factory.h +2 -2
  122. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +2 -2
  123. data/src/agent/Core/SpawningKit/Handshake/Perform.h +6 -6
  124. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +3 -55
  125. data/src/agent/Core/SpawningKit/Handshake/Session.h +5 -2
  126. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +7 -4
  127. data/src/agent/Core/SpawningKit/Journey.h +2 -2
  128. data/src/agent/Core/SpawningKit/PipeWatcher.h +20 -5
  129. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +2 -2
  130. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +2 -2
  131. data/src/agent/Core/SpawningKit/Result.h +2 -2
  132. data/src/agent/Core/SpawningKit/SmartSpawner.h +8 -4
  133. data/src/agent/Core/SpawningKit/Spawner.h +6 -2
  134. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +4 -4
  135. data/src/agent/Core/TelemetryCollector.h +2 -2
  136. data/src/agent/ExecHelper/ExecHelperMain.cpp +12 -14
  137. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +9 -12
  138. data/src/{cxx_supportlib/FileTools/LargeFiles.h → agent/MainFunctions.h} +12 -17
  139. data/src/agent/Shared/ApiAccountUtils.h +2 -2
  140. data/src/agent/Shared/ApiServerUtils.h +5 -4
  141. data/src/agent/Shared/ApplicationPoolApiKey.h +2 -2
  142. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +90 -11
  143. data/src/agent/Shared/Fundamentals/AbortHandler.h +4 -2
  144. data/src/agent/Shared/Fundamentals/Initialization.cpp +12 -6
  145. data/src/agent/Shared/Fundamentals/Initialization.h +5 -5
  146. data/src/agent/Shared/Fundamentals/Utils.cpp +2 -2
  147. data/src/agent/Shared/Fundamentals/Utils.h +2 -2
  148. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +33 -13
  149. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +3 -2
  150. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +8 -6
  151. data/src/agent/Watchdog/AgentWatcher.cpp +2 -2
  152. data/src/agent/Watchdog/ApiServer.h +3 -3
  153. data/src/agent/Watchdog/Config.h +6 -23
  154. data/src/agent/Watchdog/CoreWatcher.cpp +2 -2
  155. data/src/agent/Watchdog/InstanceDirToucher.cpp +2 -2
  156. data/src/agent/Watchdog/WatchdogMain.cpp +15 -23
  157. data/src/apache2_module/Bucket.cpp +2 -2
  158. data/src/apache2_module/Bucket.h +2 -2
  159. data/src/apache2_module/CBindings.cpp +2 -2
  160. data/src/apache2_module/Config.cpp +2 -2
  161. data/src/apache2_module/Config.h +2 -2
  162. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +12 -22
  163. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
  164. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +7 -2
  165. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +2 -2
  166. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +32 -62
  167. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +2 -2
  168. data/src/apache2_module/ConfigGeneral/Common.h +2 -2
  169. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +7 -5
  170. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +2 -2
  171. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +7 -2
  172. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +2 -2
  173. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +5 -2
  174. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +2 -2
  175. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +15 -2
  176. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
  177. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +9 -2
  178. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +2 -2
  179. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +18 -2
  180. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +5 -2
  181. data/src/apache2_module/DirectoryMapper.h +2 -2
  182. data/src/apache2_module/Hooks.cpp +29 -7
  183. data/src/apache2_module/Hooks.h +2 -2
  184. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +11 -46
  185. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
  186. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +15 -55
  187. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +4 -3
  188. data/src/apache2_module/Utils.h +2 -2
  189. data/src/apache2_module/mod_passenger.c +2 -2
  190. data/src/cxx_supportlib/Algorithms/Hasher.cpp +3 -3
  191. data/src/cxx_supportlib/Algorithms/Hasher.h +6 -9
  192. data/src/cxx_supportlib/Algorithms/MovingAverage.h +3 -168
  193. data/src/cxx_supportlib/AppLocalConfigFileUtils.h +2 -2
  194. data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +2 -2
  195. data/src/cxx_supportlib/AppTypeDetector/CBindings.h +2 -2
  196. data/src/cxx_supportlib/AppTypeDetector/Detector.h +2 -2
  197. data/src/cxx_supportlib/BackgroundEventLoop.cpp +6 -2
  198. data/src/cxx_supportlib/BackgroundEventLoop.h +2 -2
  199. data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +2 -2
  200. data/src/cxx_supportlib/ConfigKit/Common.h +3 -3
  201. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +2 -2
  202. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +2 -2
  203. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +2 -2
  204. data/src/cxx_supportlib/ConfigKit/Schema.h +2 -2
  205. data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +2 -2
  206. data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
  207. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +2 -2
  208. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +2 -2
  209. data/src/cxx_supportlib/ConfigKit/Translator.h +2 -2
  210. data/src/cxx_supportlib/ConfigKit/Utils.h +2 -2
  211. data/src/cxx_supportlib/Constants.h +4 -3
  212. data/src/cxx_supportlib/Constants.h.cxxcodebuilder +2 -2
  213. data/src/cxx_supportlib/DataStructures/HashedStaticString.h +2 -2
  214. data/src/cxx_supportlib/DataStructures/LString.cpp +2 -2
  215. data/src/cxx_supportlib/DataStructures/LString.h +6 -2
  216. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +3 -3
  217. data/src/cxx_supportlib/DataStructures/StringMap.h +4 -6
  218. data/src/cxx_supportlib/Exceptions.cpp +2 -2
  219. data/src/cxx_supportlib/Exceptions.h +2 -2
  220. data/src/cxx_supportlib/FileDescriptor.h +2 -2
  221. data/src/cxx_supportlib/FileTools/FileManip.cpp +2 -2
  222. data/src/cxx_supportlib/FileTools/FileManip.h +4 -2
  223. data/src/cxx_supportlib/FileTools/PathManip.cpp +13 -4
  224. data/src/cxx_supportlib/FileTools/PathManip.h +2 -2
  225. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +2 -2
  226. data/src/cxx_supportlib/FileTools/PathManipCBindings.h +2 -2
  227. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +2 -2
  228. data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +2 -2
  229. data/src/cxx_supportlib/Hooks.h +2 -3
  230. data/src/cxx_supportlib/IOTools/BufferedIO.h +2 -2
  231. data/src/cxx_supportlib/IOTools/IOUtils.cpp +53 -68
  232. data/src/cxx_supportlib/IOTools/IOUtils.h +67 -75
  233. data/src/cxx_supportlib/IOTools/MessageIO.h +2 -2
  234. data/src/cxx_supportlib/IOTools/MessageSerialization.h +2 -2
  235. data/src/cxx_supportlib/InstanceDirectory.h +2 -2
  236. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +5 -5
  237. data/src/cxx_supportlib/JsonTools/Autocast.h +2 -2
  238. data/src/cxx_supportlib/JsonTools/CBindings.cpp +2 -4
  239. data/src/cxx_supportlib/JsonTools/CBindings.h +2 -2
  240. data/src/cxx_supportlib/JsonTools/JsonUtils.h +6 -6
  241. data/src/cxx_supportlib/LoggingKit/Assert.h +2 -2
  242. data/src/cxx_supportlib/LoggingKit/Config.h +2 -2
  243. data/src/cxx_supportlib/LoggingKit/Context.h +18 -23
  244. data/src/cxx_supportlib/LoggingKit/Forward.h +2 -4
  245. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +38 -74
  246. data/src/cxx_supportlib/LoggingKit/Logging.h +2 -2
  247. data/src/cxx_supportlib/LoggingKit/LoggingKit.h +2 -2
  248. data/src/cxx_supportlib/LveLoggingDecorator.h +2 -2
  249. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +14 -6
  250. data/src/cxx_supportlib/MemoryKit/mbuf.h +3 -3
  251. data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
  252. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
  253. data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +2 -2
  254. data/src/cxx_supportlib/ProcessManagement/Ruby.h +2 -2
  255. data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +2 -2
  256. data/src/cxx_supportlib/ProcessManagement/Spawn.h +2 -2
  257. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +3 -3
  258. data/src/cxx_supportlib/ProcessManagement/Utils.h +2 -2
  259. data/src/cxx_supportlib/RandomGenerator.h +2 -2
  260. data/src/cxx_supportlib/ResourceLocator.h +3 -3
  261. data/src/cxx_supportlib/SafeLibev.h +5 -5
  262. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +5 -96
  263. data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -10
  264. data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +2 -2
  265. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +4 -2
  266. data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
  267. data/src/cxx_supportlib/ServerKit/Client.h +2 -2
  268. data/src/cxx_supportlib/ServerKit/ClientRef.h +2 -2
  269. data/src/cxx_supportlib/ServerKit/Config.h +2 -2
  270. data/src/cxx_supportlib/ServerKit/Context.h +8 -2
  271. data/src/cxx_supportlib/ServerKit/CookieUtils.h +2 -2
  272. data/src/cxx_supportlib/ServerKit/Errors.h +5 -4
  273. data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +2 -2
  274. data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +2 -2
  275. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +2 -2
  276. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
  277. data/src/cxx_supportlib/ServerKit/HeaderTable.h +2 -2
  278. data/src/cxx_supportlib/ServerKit/Hooks.h +4 -4
  279. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +2 -2
  280. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +2 -2
  281. data/src/cxx_supportlib/ServerKit/HttpClient.h +2 -2
  282. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +105 -71
  283. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +6 -3
  284. data/src/cxx_supportlib/ServerKit/HttpRequest.h +4 -4
  285. data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +2 -2
  286. data/src/cxx_supportlib/ServerKit/HttpServer.h +20 -14
  287. data/src/cxx_supportlib/ServerKit/Implementation.cpp +2 -2
  288. data/src/cxx_supportlib/ServerKit/Server.h +2 -8
  289. data/src/cxx_supportlib/ServerKit/llerrors.h +84 -0
  290. data/src/cxx_supportlib/ServerKit/llhttp.c +10168 -0
  291. data/src/cxx_supportlib/ServerKit/llhttp.h +903 -0
  292. data/src/cxx_supportlib/ServerKit/llhttp_api.c +510 -0
  293. data/src/cxx_supportlib/ServerKit/llhttp_http.c +170 -0
  294. data/src/cxx_supportlib/ServerKit/llversion.h +12 -0
  295. data/src/cxx_supportlib/ServerKit/url_parser.c +574 -0
  296. data/src/cxx_supportlib/ServerKit/url_parser.h +74 -0
  297. data/src/cxx_supportlib/StaticString.h +5 -3
  298. data/src/cxx_supportlib/StrIntTools/DateParsing.h +3 -3
  299. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +14 -5
  300. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +9 -4
  301. data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +2 -2
  302. data/src/cxx_supportlib/StrIntTools/StringScanning.h +2 -2
  303. data/src/cxx_supportlib/StrIntTools/Template.h +2 -2
  304. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +2 -2
  305. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +2 -2
  306. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +4 -6
  307. data/src/cxx_supportlib/SystemTools/SystemTime.cpp +2 -2
  308. data/src/cxx_supportlib/SystemTools/SystemTime.h +2 -2
  309. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +16 -16
  310. data/src/cxx_supportlib/SystemTools/UserDatabase.h +8 -12
  311. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +13 -11
  312. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +4 -2
  313. data/src/cxx_supportlib/Utils/BlockingQueue.h +2 -2
  314. data/src/cxx_supportlib/Utils/CachedFileStat.cpp +2 -2
  315. data/src/cxx_supportlib/Utils/CachedFileStat.h +2 -2
  316. data/src/cxx_supportlib/Utils/CachedFileStat.hpp +2 -2
  317. data/src/cxx_supportlib/Utils/ClassUtils.h +2 -2
  318. data/src/cxx_supportlib/Utils/Curl.h +2 -2
  319. data/src/cxx_supportlib/Utils/FastStringStream.h +9 -9
  320. data/src/cxx_supportlib/Utils/FileChangeChecker.h +2 -2
  321. data/src/cxx_supportlib/Utils/HttpConstants.h +2 -2
  322. data/src/cxx_supportlib/Utils/IniFile.h +26 -27
  323. data/src/cxx_supportlib/Utils/MessagePassing.h +2 -2
  324. data/src/cxx_supportlib/Utils/OptionParsing.h +2 -2
  325. data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +2 -2
  326. data/src/cxx_supportlib/Utils/ScopeGuard.h +2 -2
  327. data/src/cxx_supportlib/Utils/SpeedMeter.h +2 -5
  328. data/src/cxx_supportlib/Utils/Timer.h +2 -2
  329. data/src/cxx_supportlib/Utils/VariantMap.h +2 -2
  330. data/src/cxx_supportlib/Utils.cpp +3 -3
  331. data/src/cxx_supportlib/Utils.h +2 -32
  332. data/src/cxx_supportlib/WatchdogLauncher.cpp +2 -2
  333. data/src/cxx_supportlib/WatchdogLauncher.h +3 -5
  334. data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +2 -2
  335. data/src/cxx_supportlib/WrapperRegistry/CBindings.h +2 -2
  336. data/src/cxx_supportlib/WrapperRegistry/Entry.h +2 -2
  337. data/src/cxx_supportlib/WrapperRegistry/Registry.h +2 -2
  338. data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
  339. data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
  340. data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
  341. data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
  342. data/src/cxx_supportlib/oxt/detail/spin_lock_darwin.hpp +1 -1
  343. data/src/cxx_supportlib/oxt/detail/spin_lock_gcc_x86.hpp +1 -1
  344. data/src/cxx_supportlib/oxt/detail/spin_lock_portable.hpp +1 -1
  345. data/src/cxx_supportlib/oxt/detail/spin_lock_pthreads.hpp +1 -1
  346. data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +5 -1
  347. data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +2 -1
  348. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +1 -1
  349. data/src/cxx_supportlib/oxt/implementation.cpp +53 -4
  350. data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
  351. data/src/cxx_supportlib/oxt/macros.hpp +1 -1
  352. data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
  353. data/src/cxx_supportlib/oxt/system_calls.cpp +13 -5
  354. data/src/cxx_supportlib/oxt/system_calls.hpp +4 -5
  355. data/src/cxx_supportlib/oxt/thread.hpp +2 -2
  356. data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
  357. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +2 -2
  358. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +11 -3
  359. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_iterator.hpp +27 -1
  360. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +1 -1
  361. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +34 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +124 -26
  363. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +10 -18
  364. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +4 -5
  365. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +5 -1
  366. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +183 -64
  367. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +170 -68
  368. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +83 -12
  369. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +40 -11
  370. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +8 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +8 -1
  372. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_arm.hpp +8 -1
  373. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +19 -10
  374. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +19 -54
  375. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +105 -100
  376. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +107 -40
  377. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +32 -5
  378. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +12 -13
  379. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +7 -8
  380. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +1 -1
  381. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +26 -27
  382. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +73 -72
  383. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +122 -35
  384. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +2 -3
  385. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +50 -12
  386. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +4 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_ppc_asm_common.hpp +33 -0
  388. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +7 -0
  389. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +15 -6
  390. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +3 -3
  391. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +143 -0
  392. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +42 -0
  393. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +46 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +42 -0
  395. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_darwin_ulock.hpp +58 -0
  396. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +64 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +158 -0
  398. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +3 -4
  399. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +10 -5
  400. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +4 -5
  401. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +2 -60
  402. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +257 -1789
  403. data/src/cxx_supportlib/vendor-modified/boost/bind/{bind_cc.hpp → detail/bind_cc.hpp} +20 -20
  404. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf2_cc.hpp +210 -0
  405. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf_cc.hpp +405 -0
  406. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/integer_sequence.hpp +111 -0
  407. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +13 -2
  408. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/tuple_for_each.hpp +64 -0
  409. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +140 -290
  410. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +3 -16
  411. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +0 -279
  412. data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +0 -6
  413. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +2 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +4 -4
  415. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/is_evenly_divisible_by.hpp +1 -7
  416. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/requires_cxx11.hpp +23 -0
  417. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
  418. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +10 -6
  419. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +4 -4
  421. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
  422. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_style.hpp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +3 -2
  424. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +3 -3
  425. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/timezone.hpp +2 -1
  426. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
  427. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +3 -3
  428. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +1 -0
  429. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
  430. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +5 -1
  431. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  432. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +4 -4
  433. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  434. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +7 -1
  435. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +4 -1
  436. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +41 -0
  437. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +6 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -0
  439. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +20 -3
  440. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +89 -0
  441. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +5 -0
  442. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -1
  443. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +1 -0
  444. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +16 -5
  446. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +4 -2
  447. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +5 -0
  448. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +1 -0
  449. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -0
  450. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -0
  451. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +6 -0
  452. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +4 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +10 -0
  454. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -0
  455. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +23 -3
  456. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +13 -0
  457. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
  458. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +19 -3
  459. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +139 -34
  460. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
  461. data/src/cxx_supportlib/vendor-modified/boost/config/platform/wasm.hpp +6 -0
  462. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +45 -18
  463. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +11 -45
  464. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +42 -3
  465. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +11 -0
  466. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +26 -21
  467. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +30 -26
  468. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +178 -39
  469. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +12 -12
  470. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +827 -303
  471. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +57 -57
  473. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -10
  474. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +155 -179
  475. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  476. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
  477. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +14 -15
  478. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
  479. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
  480. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +24 -21
  481. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +12 -0
  482. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
  483. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +52 -16
  484. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +1 -2
  485. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +23 -13
  486. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +891 -182
  487. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +121 -66
  488. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +42 -42
  489. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +310 -231
  490. data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
  491. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
  492. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +16 -12
  493. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +91 -0
  494. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +8 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +213 -195
  496. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +10 -11
  497. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
  498. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +98 -12
  499. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +48 -12
  500. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +8 -10
  501. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +268 -120
  502. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
  503. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +12 -12
  504. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +49 -122
  505. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +1 -7
  506. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
  507. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
  508. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +7 -11
  509. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
  510. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +265 -354
  511. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +1 -0
  512. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +3 -3
  513. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
  514. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +93 -11
  515. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +1364 -1296
  516. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +367 -260
  517. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +112 -93
  518. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +80 -125
  519. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +136 -119
  520. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +19 -14
  521. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +27 -21
  522. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +35 -22
  523. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +158 -45
  524. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +8 -3
  525. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +4 -4
  526. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -0
  527. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +7 -7
  528. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -3
  529. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +3 -3
  530. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +81 -83
  531. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +93 -90
  532. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +82 -127
  533. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +229 -245
  534. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +198 -175
  535. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +131 -87
  536. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +373 -374
  537. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +6 -7
  538. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
  539. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +618 -631
  540. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_integral.hpp +146 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +408 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple_like.hpp +62 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/mulx.hpp +79 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +395 -581
  546. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +25 -24
  547. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +98 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +37 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +41 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_tuple_like.hpp +36 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +38 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/core/alignof.hpp +57 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +7 -81
  554. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +448 -215
  555. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_traits.hpp +112 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +418 -45
  557. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +29 -3
  558. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +100 -1
  559. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +46 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +19 -9
  561. data/src/cxx_supportlib/vendor-modified/boost/core/detail/is_same.hpp +39 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/core/detail/lwt_unattended.hpp +66 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
  564. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_pause.hpp +71 -0
  565. data/src/cxx_supportlib/vendor-modified/boost/{smart_ptr → core}/detail/sp_thread_sleep.hpp +39 -21
  566. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_yield.hpp +100 -0
  567. data/src/cxx_supportlib/vendor-modified/boost/core/detail/splitmix64.hpp +3 -3
  568. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +1272 -0
  569. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +78 -21
  570. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +53 -0
  571. data/src/cxx_supportlib/vendor-modified/boost/core/functor.hpp +41 -0
  572. data/src/cxx_supportlib/vendor-modified/boost/core/identity.hpp +61 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/core/invoke_swap.hpp +93 -0
  574. data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +10 -15
  575. data/src/cxx_supportlib/vendor-modified/boost/core/launder.hpp +69 -0
  576. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +41 -37
  577. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +8 -54
  578. data/src/cxx_supportlib/vendor-modified/boost/core/make_span.hpp +59 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/core/max_align.hpp +82 -0
  580. data/src/cxx_supportlib/vendor-modified/boost/core/memory_resource.hpp +108 -0
  581. data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +3 -0
  582. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +1 -1
  583. data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +7 -0
  584. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
  585. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +111 -60
  586. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +1 -1
  587. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +23 -16
  588. data/src/cxx_supportlib/vendor-modified/boost/core/serialization.hpp +131 -0
  589. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +31 -0
  590. data/src/cxx_supportlib/vendor-modified/boost/core/snprintf.hpp +173 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +401 -0
  592. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +10 -40
  593. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +1186 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/core/verbose_terminate_handler.hpp +88 -0
  595. data/src/cxx_supportlib/vendor-modified/boost/core/yield_primitives.hpp +12 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +1 -1
  597. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
  598. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
  599. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +12 -13
  600. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +2 -2
  601. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +3 -3
  602. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
  603. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
  604. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +1 -1
  605. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +1 -1
  606. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
  607. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
  608. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -1
  609. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +1 -1
  610. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +2 -2
  611. data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
  612. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
  613. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
  614. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
  615. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +161 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
  617. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -7
  618. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +24 -126
  619. data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +3 -3
  620. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +1 -1
  621. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +1 -1
  622. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +1 -1
  623. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +58 -30
  624. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +1 -1
  625. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +1 -1
  626. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +24 -0
  627. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +1 -1
  628. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +4 -4
  629. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +85 -3
  630. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +1 -1
  631. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +2 -2
  632. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +2 -2
  633. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +1 -1
  634. data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +1 -3
  635. data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +1 -3
  636. data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +1 -3
  637. data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +1 -3
  638. data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +1 -3
  639. data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +1 -3
  640. data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +1 -3
  641. data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +1 -3
  642. data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +1 -3
  643. data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +1 -3
  644. data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +1 -3
  645. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +71 -223
  646. data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +36 -41
  647. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +428 -452
  648. data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +1 -31
  649. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +5 -61
  650. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +6 -10
  651. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +2 -2
  652. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +85 -80
  653. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +32 -25
  654. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +16 -13
  655. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +45 -45
  656. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +32 -25
  657. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +104 -97
  658. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +87 -90
  659. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +29 -20
  660. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +77 -8
  661. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +2 -2
  662. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
  663. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +30 -30
  664. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +8 -7
  665. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +14 -14
  666. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +38 -39
  667. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +84 -15
  668. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +3 -3
  669. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +24 -24
  670. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/empty_node_checker.hpp +1 -1
  671. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +1 -1
  672. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +1 -32
  673. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/function_detector.hpp +1 -1
  674. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +14 -15
  675. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +277 -0
  676. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +11 -49
  677. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_integral.hpp +119 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_mix.hpp +130 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +195 -115
  680. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +22 -26
  681. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +6 -6
  682. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +121 -75
  683. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +7 -7
  684. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +20 -20
  685. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +4 -4
  686. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +3 -3
  687. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +7 -1
  688. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +3 -3
  689. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
  690. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +7 -17
  691. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +18 -18
  692. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +3 -140
  693. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  694. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +14 -14
  695. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +26 -19
  696. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +2 -2
  697. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +22 -22
  698. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +21 -21
  699. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +6 -6
  700. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +28 -28
  701. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/value_functors.hpp +10 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +70 -3
  703. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +1722 -995
  704. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +2 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +84 -11
  706. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +68 -63
  707. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +2 -2
  708. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +17 -3
  709. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +15 -11
  710. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +12 -4
  711. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +11 -4
  712. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +16 -13
  713. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +38 -38
  714. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +32 -25
  715. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +32 -25
  716. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +18 -15
  717. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +22 -22
  718. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +80 -79
  719. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +32 -25
  720. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +16 -13
  721. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +38 -36
  722. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +22 -19
  723. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +25 -21
  724. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +44 -37
  725. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +2 -2
  726. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +64 -54
  727. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +11 -11
  728. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +2 -2
  729. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +11 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +6 -6
  731. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -1
  732. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +5 -5
  733. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +10 -11
  734. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +148 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +2 -2
  736. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +106 -25
  737. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +8 -4
  738. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +7 -13
  739. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +59 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +113 -131
  741. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +618 -646
  742. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +83 -74
  743. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +26 -33
  744. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +22 -29
  745. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +73 -0
  746. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  747. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +23 -18
  748. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +7 -9
  749. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +22 -161
  750. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +9 -12
  751. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +4 -2
  752. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +3 -1
  753. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +3 -1
  754. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
  755. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +10 -18
  756. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +13 -14
  757. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +24 -14
  758. data/src/cxx_supportlib/vendor-modified/boost/limits.hpp +12 -12
  759. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +7 -5
  760. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +48 -33
  761. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +92 -75
  762. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +216 -185
  763. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +11 -10
  764. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +22 -11
  765. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +9 -0
  766. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +125 -165
  767. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +24 -15
  768. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +16 -5
  769. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/search.hpp +79 -0
  770. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +8 -2
  771. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +8 -5
  772. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +11 -11
  773. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +0 -1
  774. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +22 -1
  775. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +5 -6
  776. data/src/cxx_supportlib/vendor-modified/boost/move/detail/addressof.hpp +61 -0
  777. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
  778. data/src/cxx_supportlib/vendor-modified/boost/move/detail/force_ptr.hpp +36 -0
  779. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  780. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +108 -9
  781. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
  782. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +9 -52
  783. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +15 -0
  784. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  785. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +70 -26
  786. data/src/cxx_supportlib/vendor-modified/boost/move/detail/placement_new.hpp +2 -0
  787. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +40 -33
  788. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +7 -3
  789. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_end.hpp +5 -0
  790. data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +1 -1
  791. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +90 -30
  792. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +90 -3
  793. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +22 -22
  794. data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +10 -0
  795. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +65 -66
  796. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +2 -2
  797. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +38 -33
  798. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +1386 -0
  799. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +120 -0
  800. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/config.hpp +149 -0
  801. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_append.hpp +321 -0
  802. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +48 -0
  803. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_count.hpp +147 -0
  804. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_defer.hpp +119 -0
  805. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +166 -0
  806. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_front.hpp +50 -0
  807. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_list.hpp +39 -0
  808. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_value_list.hpp +41 -0
  809. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list.hpp +24 -0
  810. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list_v.hpp +27 -0
  811. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +87 -0
  812. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_min_element.hpp +51 -0
  813. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_plus.hpp +84 -0
  814. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +48 -0
  815. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_rename.hpp +54 -0
  816. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_value.hpp +25 -0
  817. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_void.hpp +32 -0
  818. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_with_index.hpp +385 -0
  819. data/src/cxx_supportlib/vendor-modified/boost/mp11/function.hpp +222 -0
  820. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +121 -0
  821. data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +51 -0
  822. data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +481 -0
  823. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +188 -0
  824. data/src/cxx_supportlib/vendor-modified/boost/mp11/utility.hpp +169 -0
  825. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +16 -0
  826. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +1 -1
  827. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +6 -6
  828. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
  829. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +1 -1
  830. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity.hpp +1 -1
  831. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/yes_no.hpp +2 -1
  832. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +1 -1
  833. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +1 -1
  834. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +1 -1
  835. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +3 -44
  836. data/src/cxx_supportlib/vendor-modified/boost/nondet_random.hpp +22 -0
  837. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +1 -1
  838. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +15 -1
  839. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
  840. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
  841. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
  842. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +4 -49
  843. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +3 -4
  844. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +16 -7
  845. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +49 -0
  846. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +49 -48
  847. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +11 -11
  848. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +9 -9
  849. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +31 -260
  850. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_utility.hpp +41 -0
  851. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +169 -599
  852. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +4 -7
  853. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +2 -2
  854. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +1 -1
  855. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +1 -1
  856. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +4 -4
  857. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +1 -1
  858. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +1 -1
  859. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +3 -3
  860. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +1 -1
  861. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +1 -1
  862. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +3 -3
  863. data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +12 -24
  864. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +22 -9
  865. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +13 -0
  866. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/loongarch.h +41 -0
  867. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +2 -2
  868. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  869. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +1 -1
  870. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +2 -2
  871. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msvc.h +53 -0
  872. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +1 -0
  873. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +1 -1
  875. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -0
  876. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  877. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +8 -2
  878. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +5 -5
  879. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +15 -15
  880. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +1 -1
  881. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +203 -0
  882. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +14 -14
  883. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +2 -2
  884. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +1 -0
  885. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +4 -82
  886. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/gcd_lcm.hpp +53 -0
  887. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_evenly_divisible_by.hpp +32 -0
  888. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_ratio.hpp +28 -0
  889. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +1 -3
  890. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +5 -249
  891. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +30 -56
  892. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +0 -533
  893. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +8 -1
  894. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +1 -1
  895. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +3 -2
  896. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +1 -0
  897. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -7
  898. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +4 -3
  899. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +23 -13
  900. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +10 -10
  901. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +2 -0
  902. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +3 -2
  903. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +6 -0
  904. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +3 -1
  905. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +7 -7
  906. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +235 -104
  907. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +37 -43
  908. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +1 -23
  909. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -0
  910. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +52 -0
  911. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +14 -18
  912. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +7 -15
  913. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +40 -91
  914. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +0 -16
  915. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -0
  916. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +4 -2
  917. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +1 -1
  918. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +13 -14
  919. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +16 -17
  920. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +17 -56
  921. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
  922. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +5 -14
  923. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_type_traits.hpp +55 -0
  924. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +1 -0
  925. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +11 -2
  926. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +5 -6
  927. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +4 -6
  928. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +7 -9
  929. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +32 -119
  930. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +17 -18
  931. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +2 -5
  932. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +10 -8
  933. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +28 -564
  934. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +64 -0
  935. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +17 -20
  936. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +20 -21
  937. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +34 -66
  938. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +79 -370
  939. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +31 -88
  940. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +2 -1
  941. data/src/cxx_supportlib/vendor-modified/boost/system/detail/append_int.hpp +32 -0
  942. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +26 -8
  943. data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +3 -12
  944. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +38 -50
  945. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +76 -49
  946. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +261 -159
  947. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +145 -58
  948. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +7 -7
  949. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +17 -5
  950. data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +7 -7
  951. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +3 -13
  952. data/src/cxx_supportlib/vendor-modified/boost/system/detail/mutex.hpp +128 -0
  953. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +1 -43
  954. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +20 -77
  955. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +97 -0
  956. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +7 -7
  957. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +8 -20
  958. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +71 -0
  959. data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +9 -2
  960. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +30 -59
  961. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +1 -24
  962. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +1 -14
  963. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +1 -14
  964. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +2 -12
  965. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +0 -11
  966. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +0 -2
  967. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +0 -16
  968. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +0 -11
  969. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +0 -11
  970. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +0 -19
  971. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +4 -6
  972. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -26
  973. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +1 -18
  974. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +1 -14
  975. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +11 -4
  976. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_to_unsigned.hpp +55 -0
  977. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_trim.hpp +29 -0
  978. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +5 -5
  979. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +0 -1
  980. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +3 -2
  981. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +1 -1
  982. data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +9 -0
  983. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +4 -4
  984. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +5 -0
  985. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +104 -6
  986. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +2 -2
  987. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +25 -24
  988. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -1
  989. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +4 -1
  990. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
  991. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
  992. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_swappable_cxx_11.hpp +70 -0
  993. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +22 -8
  994. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +2 -1
  995. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +22 -0
  996. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +1 -1
  997. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -0
  998. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +1 -1
  999. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +4 -24
  1000. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_swappable.hpp +92 -0
  1001. data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +2 -3
  1002. data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +1 -10
  1003. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -6
  1004. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +2 -4
  1005. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +2 -4
  1006. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +2 -5
  1007. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +2 -15
  1008. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +4 -51
  1009. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +2 -6
  1010. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +2 -9
  1011. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +2 -46
  1012. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +2 -5
  1013. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +2 -29
  1014. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +2 -9
  1015. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +4 -9
  1016. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +2 -6
  1017. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +2 -5
  1018. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +2 -9
  1019. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +2 -19
  1020. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +2 -5
  1021. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +2 -5
  1022. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +2 -12
  1023. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +2 -4
  1024. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +2 -10
  1025. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +2 -5
  1026. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +8 -202
  1027. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +1055 -0
  1028. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +66 -0
  1029. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +917 -0
  1030. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +67 -0
  1031. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map.hpp +1202 -0
  1032. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map_fwd.hpp +67 -0
  1033. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set.hpp +1065 -0
  1034. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set_fwd.hpp +67 -0
  1035. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocator_constructed.hpp +59 -0
  1036. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/archive_constructed.hpp +71 -0
  1037. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/bad_archive_exception.hpp +27 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +127 -0
  1039. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +900 -0
  1040. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +1993 -0
  1041. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2404 -0
  1042. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
  1043. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/element_type.hpp +64 -0
  1044. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +94 -0
  1045. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_set_types.hpp +50 -0
  1046. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/ignore_wshadow.hpp +35 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +319 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_handle.hpp +56 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +150 -0
  1050. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_handle.hpp +48 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +101 -0
  1052. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/reentrancy_check.hpp +138 -0
  1053. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/restore_wshadow.hpp +11 -0
  1054. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/rw_spinlock.hpp +179 -0
  1055. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +661 -0
  1056. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/tuple_rotate_right.hpp +53 -0
  1057. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/types_constructibility.hpp +172 -0
  1058. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +1463 -3502
  1059. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +10 -31
  1060. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/mulx.hpp +129 -0
  1061. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/narrow_cast.hpp +44 -0
  1062. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/opt_storage.hpp +30 -0
  1063. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +214 -0
  1064. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialization_version.hpp +74 -0
  1065. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_container.hpp +204 -0
  1066. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_fca_container.hpp +156 -0
  1067. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_tracked_address.hpp +104 -0
  1068. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +8 -30
  1069. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/static_assert.hpp +16 -0
  1070. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/throw_exception.hpp +30 -0
  1071. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +237 -0
  1072. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
  1073. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +70 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +821 -0
  1075. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +59 -0
  1076. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +631 -0
  1077. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +58 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +760 -994
  1079. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +35 -13
  1080. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +895 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +59 -0
  1082. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +707 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +58 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_printers.hpp +414 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +539 -664
  1086. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +35 -15
  1087. data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +2 -1
  1088. data/src/cxx_supportlib/vendor-modified/boost/utility/binary.hpp +3 -2
  1089. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
  1090. data/src/cxx_supportlib/vendor-modified/boost/utility/in_place_factory.hpp +6 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +13 -2
  1092. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +6 -2
  1093. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +24 -3
  1094. data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +4 -1
  1095. data/src/cxx_supportlib/vendor-modified/boost/utility/typed_in_place_factory.hpp +6 -1
  1096. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +12 -8
  1097. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1098. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +2 -9
  1099. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +3 -3
  1100. data/src/helper-scripts/backtrace-sanitizer.rb +2 -2
  1101. data/src/helper-scripts/crash-watch.rb +1 -1
  1102. data/src/helper-scripts/download_binaries/extconf.rb +2 -2
  1103. data/src/helper-scripts/meteor-loader.rb +9 -4
  1104. data/src/helper-scripts/node-loader.js +2 -2
  1105. data/src/helper-scripts/prespawn +2 -2
  1106. data/src/helper-scripts/rack-loader.rb +2 -2
  1107. data/src/helper-scripts/rack-preloader.rb +2 -2
  1108. data/src/helper-scripts/wsgi-loader.py +36 -19
  1109. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +26 -34
  1110. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +2 -2
  1111. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +14 -2
  1112. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +2 -2
  1113. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +38 -50
  1114. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +2 -2
  1115. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +2 -2
  1116. data/src/nginx_module/Configuration.c +8 -3
  1117. data/src/nginx_module/Configuration.h +1 -1
  1118. data/src/nginx_module/ContentHandler.c +1 -1
  1119. data/src/nginx_module/ContentHandler.h +1 -1
  1120. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +13 -2
  1121. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
  1122. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +38 -2
  1123. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +2 -2
  1124. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +29 -2
  1125. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
  1126. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +8 -2
  1127. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +2 -2
  1128. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +10 -2
  1129. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  1130. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +7 -26
  1131. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
  1132. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +13 -50
  1133. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
  1134. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +6 -18
  1135. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  1136. data/src/nginx_module/StaticContentHandler.c +1 -1
  1137. data/src/nginx_module/StaticContentHandler.h +1 -1
  1138. data/src/nginx_module/ngx_http_passenger_module.c +2 -6
  1139. data/src/nginx_module/ngx_http_passenger_module.h +1 -1
  1140. data/src/nodejs_supportlib/phusion_passenger/line_reader.js +2 -2
  1141. data/src/ruby_native_extension/extconf.rb +3 -3
  1142. data/src/ruby_native_extension/passenger_native_support.c +22 -5
  1143. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +2 -2
  1144. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +2 -2
  1145. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +2 -2
  1146. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -2
  1147. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +2 -2
  1148. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +22 -26
  1149. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +2 -2
  1150. data/src/ruby_supportlib/phusion_passenger/common_library.rb +18 -10
  1151. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +2 -2
  1152. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +2 -2
  1153. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +2 -2
  1154. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +2 -2
  1155. data/src/ruby_supportlib/phusion_passenger/config/command.rb +2 -2
  1156. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +2 -2
  1157. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +8 -4
  1158. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +2 -2
  1159. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +2 -2
  1160. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +2 -2
  1161. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +2 -2
  1162. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +12 -2
  1163. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +2 -2
  1164. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +2 -2
  1165. data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -2
  1166. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +15 -7
  1167. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +2 -2
  1168. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +2 -2
  1169. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +2 -2
  1170. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +2 -2
  1171. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +2 -2
  1172. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +2 -2
  1173. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +2 -2
  1174. data/src/ruby_supportlib/phusion_passenger/constants.rb +3 -2
  1175. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -2
  1176. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +15 -5
  1177. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +2 -2
  1178. data/src/ruby_supportlib/phusion_passenger/message_client.rb +2 -2
  1179. data/src/ruby_supportlib/phusion_passenger/native_support.rb +12 -7
  1180. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +21 -30
  1181. data/src/ruby_supportlib/phusion_passenger/packaging.rb +3 -2
  1182. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +11 -12
  1183. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +2 -2
  1184. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +3 -3
  1185. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +56 -14
  1186. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +2 -2
  1187. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +2 -2
  1188. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +9 -31
  1189. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -0
  1190. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +6 -6
  1191. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +2 -2
  1192. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +2 -2
  1193. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +2 -2
  1194. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +7 -37
  1195. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +13 -14
  1196. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +4 -4
  1197. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -2
  1198. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +2 -2
  1199. data/src/ruby_supportlib/phusion_passenger/plugin.rb +2 -2
  1200. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +14 -8
  1201. data/src/ruby_supportlib/phusion_passenger/public_api.rb +5 -2
  1202. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +73 -0
  1203. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
  1204. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +14 -3
  1205. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +32 -58
  1206. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -2
  1207. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +2 -2
  1208. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +7 -2
  1209. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +2 -2
  1210. data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +2 -2
  1211. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +2 -2
  1212. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +2 -2
  1213. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +27 -23
  1214. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -2
  1215. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +2 -2
  1216. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +2 -2
  1217. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +6 -3
  1218. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +3 -3
  1219. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +2 -6
  1220. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +3 -4
  1221. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +9 -3
  1222. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +2 -2
  1223. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +2 -2
  1224. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +2 -2
  1225. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +2 -2
  1226. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +2 -2
  1227. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -198
  1228. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +2 -2
  1229. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +2 -2
  1230. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +2 -2
  1231. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +67 -0
  1232. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +2 -2
  1233. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +2 -2
  1234. data/src/ruby_supportlib/phusion_passenger/utils.rb +8 -17
  1235. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +2 -2
  1236. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +1 -1
  1237. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +5 -1
  1238. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +6 -2
  1239. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +1 -1
  1240. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +1 -1
  1241. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +1 -1
  1242. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +1 -1
  1243. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +1 -1
  1244. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +1 -1
  1245. data/src/ruby_supportlib/phusion_passenger.rb +11 -11
  1246. data/src/schema_printer/SchemaPrinterMain.cpp +2 -6
  1247. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +2 -2
  1248. metadata +211 -741
  1249. data/dev/webpacketpp.patch +0 -39
  1250. data/src/agent/Core/AdminPanelConnector.h +0 -681
  1251. data/src/cxx_supportlib/DataStructures/HashMap.h +0 -60
  1252. data/src/cxx_supportlib/FileTools/LargeFiles.cpp +0 -41
  1253. data/src/cxx_supportlib/ServerKit/http_parser.cpp +0 -2265
  1254. data/src/cxx_supportlib/ServerKit/http_parser.h +0 -330
  1255. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +0 -975
  1256. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -19
  1257. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +0 -54
  1258. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +0 -20
  1259. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -21
  1260. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +0 -52
  1261. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +0 -31
  1262. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +0 -23
  1263. data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +0 -91
  1264. data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +0 -53
  1265. data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +0 -26
  1266. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +0 -456
  1267. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +0 -302
  1268. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +0 -179
  1269. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +0 -179
  1270. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +0 -224
  1271. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +0 -37
  1272. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +0 -1267
  1273. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +0 -135
  1274. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +0 -1305
  1275. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +0 -705
  1276. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +0 -292
  1277. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +0 -1296
  1278. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +0 -800
  1279. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +0 -909
  1280. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +0 -578
  1281. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +0 -1917
  1282. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +0 -2600
  1283. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +0 -409
  1284. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +0 -689
  1285. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +0 -1122
  1286. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +0 -454
  1287. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +0 -38
  1288. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +0 -823
  1289. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +0 -723
  1290. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +0 -756
  1291. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +0 -2500
  1292. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +0 -255
  1293. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +0 -27
  1294. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +0 -281
  1295. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +0 -27
  1296. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +0 -247
  1297. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +0 -27
  1298. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +0 -523
  1299. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +0 -361
  1300. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +0 -237
  1301. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +0 -176
  1302. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +0 -501
  1303. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +0 -220
  1304. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +0 -138
  1305. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +0 -1138
  1306. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +0 -330
  1307. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +0 -40
  1308. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +0 -132
  1309. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +0 -114
  1310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +0 -40
  1311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +0 -34
  1312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +0 -32
  1313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +0 -66
  1314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +0 -165
  1315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +0 -71
  1316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +0 -1073
  1317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +0 -109
  1318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +0 -68
  1319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +0 -652
  1320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +0 -128
  1321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +0 -90
  1322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +0 -127
  1323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +0 -68
  1324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +0 -192
  1325. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +0 -90
  1326. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +0 -94
  1327. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +0 -122
  1328. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +0 -151
  1329. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +0 -1938
  1330. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +0 -416
  1331. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +0 -33
  1332. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +0 -62
  1333. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +0 -34
  1334. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +0 -337
  1335. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +0 -38
  1336. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +0 -141
  1337. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +0 -150
  1338. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +0 -150
  1339. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +0 -224
  1340. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +0 -278
  1341. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +0 -50
  1342. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +0 -85
  1343. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +0 -206
  1344. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +0 -86
  1345. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +0 -41
  1346. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +0 -82
  1347. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +0 -46
  1348. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +0 -33
  1349. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +0 -93
  1350. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +0 -70
  1351. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +0 -67
  1352. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +0 -101
  1353. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +0 -54
  1354. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +0 -290
  1355. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +0 -45
  1356. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +0 -80
  1357. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +0 -268
  1358. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +0 -561
  1359. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +0 -527
  1360. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +0 -333
  1361. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +0 -120
  1362. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +0 -610
  1363. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +0 -101
  1364. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +0 -462
  1365. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +0 -111
  1366. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +0 -819
  1367. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +0 -173
  1368. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +0 -398
  1369. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +0 -115
  1370. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +0 -601
  1371. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +0 -76
  1372. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +0 -131
  1373. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +0 -65
  1374. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +0 -48
  1375. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +0 -86
  1376. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +0 -48
  1377. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +0 -225
  1378. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +0 -151
  1379. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +0 -302
  1380. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +0 -160
  1381. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +0 -661
  1382. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +0 -126
  1383. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +0 -359
  1384. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +0 -96
  1385. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +0 -199
  1386. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +0 -670
  1387. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +0 -3966
  1388. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +0 -187
  1389. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +0 -356
  1390. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +0 -160
  1391. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +0 -89
  1392. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +0 -204
  1393. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +0 -37
  1394. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +0 -47
  1395. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +0 -99
  1396. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +0 -103
  1397. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +0 -86
  1398. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +0 -174
  1399. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +0 -314
  1400. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +0 -128
  1401. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +0 -72
  1402. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +0 -254
  1403. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +0 -26
  1404. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +0 -61
  1405. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +0 -64
  1406. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -135
  1407. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +0 -50
  1408. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +0 -56
  1409. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +0 -45
  1410. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +0 -108
  1411. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +0 -49
  1412. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +0 -61
  1413. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +0 -66
  1414. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +0 -70
  1415. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +0 -71
  1416. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +0 -521
  1417. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +0 -62
  1418. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +0 -69
  1419. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +0 -70
  1420. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +0 -173
  1421. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +0 -216
  1422. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +0 -164
  1423. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +0 -40
  1424. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +0 -91
  1425. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +0 -149
  1426. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +0 -177
  1427. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +0 -120
  1428. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +0 -82
  1429. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +0 -78
  1430. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +0 -87
  1431. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +0 -66
  1432. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +0 -111
  1433. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +0 -81
  1434. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +0 -218
  1435. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +0 -511
  1436. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +0 -100
  1437. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +0 -239
  1438. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +0 -244
  1439. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +0 -125
  1440. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +0 -161
  1441. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +0 -166
  1442. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +0 -147
  1443. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -164
  1444. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +0 -158
  1445. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +0 -607
  1446. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +0 -654
  1447. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +0 -100
  1448. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +0 -32
  1449. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +0 -42
  1450. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +0 -73
  1451. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +0 -214
  1452. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +0 -107
  1453. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +0 -44
  1454. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +0 -142
  1455. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +0 -47
  1456. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +0 -152
  1457. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +0 -147
  1458. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +0 -160
  1459. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +0 -231
  1460. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +0 -80
  1461. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +0 -42
  1462. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +0 -103
  1463. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +0 -89
  1464. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +0 -48
  1465. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +0 -250
  1466. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +0 -166
  1467. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +0 -46
  1468. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +0 -92
  1469. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +0 -49
  1470. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +0 -51
  1471. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +0 -231
  1472. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +0 -100
  1473. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +0 -385
  1474. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +0 -318
  1475. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +0 -93
  1476. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +0 -419
  1477. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +0 -64
  1478. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +0 -47
  1479. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +0 -54
  1480. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +0 -190
  1481. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +0 -64
  1482. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +0 -72
  1483. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +0 -75
  1484. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +0 -83
  1485. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +0 -73
  1486. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +0 -175
  1487. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +0 -146
  1488. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +0 -49
  1489. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +0 -62
  1490. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +0 -53
  1491. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +0 -101
  1492. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +0 -258
  1493. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +0 -55
  1494. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +0 -53
  1495. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +0 -391
  1496. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +0 -70
  1497. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +0 -105
  1498. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +0 -68
  1499. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +0 -35
  1500. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +0 -42
  1501. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +0 -71
  1502. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +0 -158
  1503. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +0 -294
  1504. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +0 -92
  1505. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +0 -51
  1506. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +0 -130
  1507. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +0 -153
  1508. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +0 -329
  1509. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +0 -123
  1510. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +0 -361
  1511. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +0 -339
  1512. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +0 -2348
  1513. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +0 -49
  1514. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +0 -1553
  1515. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +0 -1214
  1516. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +0 -401
  1517. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +0 -1217
  1518. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +0 -493
  1519. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +0 -235
  1520. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +0 -223
  1521. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +0 -154
  1522. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +0 -107
  1523. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +0 -130
  1524. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +0 -263
  1525. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +0 -235
  1526. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +0 -92
  1527. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +0 -289
  1528. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +0 -254
  1529. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +0 -42
  1530. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +0 -38
  1531. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +0 -73
  1532. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +0 -1118
  1533. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +0 -228
  1534. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +0 -96
  1535. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +0 -869
  1536. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +0 -333
  1537. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +0 -282
  1538. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +0 -50
  1539. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +0 -867
  1540. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +0 -291
  1541. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +0 -88
  1542. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +0 -313
  1543. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +0 -254
  1544. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +0 -254
  1545. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +0 -487
  1546. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +0 -251
  1547. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +0 -454
  1548. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +0 -48
  1549. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +0 -414
  1550. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +0 -349
  1551. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +0 -304
  1552. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +0 -73
  1553. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +0 -137
  1554. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +0 -133
  1555. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +0 -538
  1556. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +0 -157
  1557. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +0 -1057
  1558. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +0 -607
  1559. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +0 -160
  1560. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +0 -120
  1561. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_traits.hpp +0 -185
  1562. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +0 -181
  1563. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/append.hpp +0 -219
  1564. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +0 -231
  1565. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_tuple.hpp +0 -248
  1566. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/deferred.hpp +0 -106
  1567. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +0 -434
  1568. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/prepend.hpp +0 -219
  1569. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +0 -100
  1570. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +0 -217
  1571. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +0 -73
  1572. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +0 -608
  1573. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +0 -284
  1574. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +0 -195
  1575. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +0 -125
  1576. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +0 -135
  1577. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +0 -112
  1578. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +0 -123
  1579. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +0 -124
  1580. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +0 -129
  1581. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +0 -106
  1582. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +0 -56
  1583. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +0 -113
  1584. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +0 -46
  1585. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +0 -762
  1586. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +0 -500
  1587. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +0 -480
  1588. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +0 -348
  1589. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +0 -689
  1590. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +0 -906
  1591. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +0 -258
  1592. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +0 -132
  1593. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +0 -253
  1594. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +0 -130
  1595. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +0 -111
  1596. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +0 -84
  1597. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +0 -302
  1598. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +0 -45
  1599. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +0 -64
  1600. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +0 -446
  1601. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +0 -177
  1602. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +0 -51
  1603. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +0 -258
  1604. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +0 -1201
  1605. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +0 -735
  1606. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +0 -3317
  1607. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +0 -611
  1608. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +0 -61
  1609. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +0 -556
  1610. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +0 -519
  1611. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +0 -85
  1612. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +0 -36
  1613. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +0 -94
  1614. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +0 -187
  1615. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +0 -356
  1616. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +0 -143
  1617. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +0 -293
  1618. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -1030
  1619. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +0 -1102
  1620. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +0 -646
  1621. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -1552
  1622. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +0 -378
  1623. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +0 -35
  1624. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +0 -20
  1625. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +0 -292
  1626. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +0 -357
  1627. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +0 -164
  1628. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +0 -136
  1629. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +0 -384
  1630. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +0 -185
  1631. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +0 -131
  1632. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +0 -55
  1633. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +0 -293
  1634. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +0 -1078
  1635. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +0 -115
  1636. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +0 -194
  1637. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +0 -246
  1638. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +0 -313
  1639. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +0 -143
  1640. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +0 -201
  1641. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +0 -568
  1642. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +0 -44
  1643. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +0 -117
  1644. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +0 -69
  1645. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +0 -241
  1646. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +0 -69
  1647. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +0 -212
  1648. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +0 -69
  1649. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +0 -352
  1650. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +0 -45
  1651. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +0 -56
  1652. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +0 -56
  1653. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +0 -218
  1654. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +0 -55
  1655. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +0 -187
  1656. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +0 -193
  1657. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +0 -263
  1658. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +0 -237
  1659. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +0 -131
  1660. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +0 -45
  1661. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +0 -157
  1662. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +0 -113
  1663. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +0 -72
  1664. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +0 -71
  1665. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +0 -63
  1666. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +0 -48
  1667. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +0 -61
  1668. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +0 -61
  1669. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +0 -249
  1670. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +0 -103
  1671. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +0 -82
  1672. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +0 -141
  1673. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +0 -133
  1674. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +0 -92
  1675. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +0 -60
  1676. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +0 -128
  1677. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +0 -153
  1678. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +0 -710
  1679. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +0 -503
  1680. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +0 -39
  1681. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +0 -92
  1682. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +0 -39
  1683. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +0 -128
  1684. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +0 -738
  1685. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +0 -328
  1686. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +0 -1390
  1687. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +0 -740
  1688. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +0 -3033
  1689. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +0 -68
  1690. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +0 -575
  1691. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +0 -356
  1692. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +0 -38
  1693. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +0 -169
  1694. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +0 -30
  1695. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +0 -561
  1696. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -346
  1697. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +0 -763
  1698. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +0 -211
  1699. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +0 -121
  1700. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +0 -172
  1701. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +0 -69
  1702. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +0 -365
  1703. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +0 -167
  1704. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +0 -427
  1705. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +0 -103
  1706. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +0 -34
  1707. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +0 -68
  1708. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +0 -74
  1709. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +0 -71
  1710. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +0 -208
  1711. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +0 -64
  1712. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +0 -78
  1713. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +0 -129
  1714. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +0 -92
  1715. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +0 -69
  1716. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +0 -1247
  1717. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +0 -104
  1718. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +0 -75
  1719. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +0 -166
  1720. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +0 -29
  1721. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +0 -100
  1722. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +0 -974
  1723. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +0 -54
  1724. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +0 -69
  1725. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +0 -65
  1726. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +0 -28
  1727. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +0 -33
  1728. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +0 -44
  1729. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +0 -571
  1730. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +0 -35
  1731. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +0 -92
  1732. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -686
  1733. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +0 -44
  1734. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +0 -282
  1735. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +0 -1133
  1736. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +0 -88
  1737. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +0 -116
  1738. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +0 -116
  1739. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +0 -114
  1740. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +0 -114
  1741. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +0 -106
  1742. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +0 -110
  1743. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +0 -110
  1744. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +0 -110
  1745. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +0 -110
  1746. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +0 -110
  1747. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +0 -110
  1748. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +0 -110
  1749. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +0 -110
  1750. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +0 -110
  1751. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +0 -110
  1752. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +0 -110
  1753. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +0 -110
  1754. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +0 -110
  1755. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +0 -110
  1756. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +0 -110
  1757. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +0 -114
  1758. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +0 -114
  1759. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +0 -236
  1760. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +0 -236
  1761. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +0 -110
  1762. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +0 -110
  1763. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +0 -110
  1764. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +0 -125
  1765. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +0 -126
  1766. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +0 -114
  1767. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +0 -114
  1768. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +0 -24
  1769. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +0 -35
  1770. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +0 -40
  1771. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +0 -20
  1772. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +0 -26
  1773. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +0 -256
  1774. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +0 -27
  1775. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +0 -26
  1776. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +0 -21
  1777. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +0 -168
  1778. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +0 -162
  1779. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +0 -73
  1780. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +0 -23
  1781. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +0 -58
  1782. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +0 -437
  1783. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +0 -363
  1784. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +0 -512
  1785. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +0 -496
  1786. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +0 -40
  1787. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +0 -41
  1788. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +0 -147
  1789. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +0 -39
  1790. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +0 -39
  1791. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +0 -1348
  1792. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +0 -748
  1793. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +0 -23
  1794. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +0 -187
  1795. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +0 -201
  1796. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +0 -67
  1797. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +0 -55
  1798. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +0 -150
  1799. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +0 -228
  1800. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +0 -441
  1801. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +0 -345
  1802. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +0 -103
  1803. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_template.hpp +0 -1047
  1804. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +0 -130
  1805. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +0 -475
  1806. data/src/cxx_supportlib/vendor-modified/boost/checked_delete.hpp +0 -17
  1807. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +0 -71
  1808. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
  1809. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
  1810. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
  1811. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -361
  1812. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1813. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
  1814. data/src/cxx_supportlib/vendor-modified/boost/function/detail/function_iterate.hpp +0 -16
  1815. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +0 -39
  1816. data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +0 -369
  1817. data/src/cxx_supportlib/vendor-modified/boost/function/detail/prologue.hpp +0 -26
  1818. data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +0 -26
  1819. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +0 -6
  1820. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +0 -1058
  1821. data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +0 -55
  1822. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +0 -89
  1823. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +0 -124
  1824. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +0 -126
  1825. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +0 -89
  1826. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +0 -367
  1827. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +0 -1342
  1828. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +0 -30
  1829. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +0 -22
  1830. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +0 -19
  1831. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +0 -30
  1832. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +0 -30
  1833. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +0 -30
  1834. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +0 -30
  1835. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +0 -30
  1836. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +0 -30
  1837. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +0 -30
  1838. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +0 -30
  1839. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +0 -30
  1840. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +0 -30
  1841. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +0 -30
  1842. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +0 -31
  1843. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +0 -30
  1844. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +0 -25
  1845. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +0 -15
  1846. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +0 -30
  1847. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +0 -30
  1848. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/indexed_bit_flag.hpp +0 -54
  1849. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +0 -64
  1850. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_forward.hpp +0 -52
  1851. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_nullptr_t.hpp +0 -45
  1852. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_obsolete.hpp +0 -32
  1853. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +0 -51
  1854. data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +0 -17
  1855. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +0 -278
  1856. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +0 -297
  1857. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +0 -265
  1858. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +0 -100
  1859. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -58
  1860. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +0 -34
  1861. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +0 -118
  1862. data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +0 -80
  1863. data/src/cxx_supportlib/vendor-modified/boost/typeof/message.hpp +0 -8
  1864. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +0 -121
  1865. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +0 -60
  1866. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +0 -38
  1867. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +0 -50
  1868. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +0 -135
  1869. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +0 -61
  1870. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +0 -32
  1871. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +0 -160
  1872. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +0 -149
  1873. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +0 -27
  1874. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +0 -37
  1875. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +0 -187
  1876. data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +0 -29
  1877. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +0 -166
  1878. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +0 -321
  1879. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +0 -471
  1880. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +0 -621
  1881. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +0 -171
  1882. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +0 -63
  1883. data/src/cxx_supportlib/vendor-modified/websocketpp/COPYING +0 -145
  1884. data/src/cxx_supportlib/vendor-modified/websocketpp/changelog.md +0 -444
  1885. data/src/cxx_supportlib/vendor-modified/websocketpp/readme.md +0 -49
  1886. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/base64/base64.hpp +0 -178
  1887. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/client.hpp +0 -33
  1888. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/close.hpp +0 -353
  1889. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/asio.hpp +0 -141
  1890. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/asio_ssl.hpp +0 -39
  1891. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/chrono.hpp +0 -68
  1892. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/connection_hdl.hpp +0 -52
  1893. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/cpp11.hpp +0 -162
  1894. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/functional.hpp +0 -100
  1895. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +0 -448
  1896. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/memory.hpp +0 -88
  1897. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/network.hpp +0 -106
  1898. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/platforms.hpp +0 -46
  1899. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/random.hpp +0 -82
  1900. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/regex.hpp +0 -59
  1901. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/stdint.hpp +0 -73
  1902. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/system_error.hpp +0 -84
  1903. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/thread.hpp +0 -88
  1904. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/time.hpp +0 -56
  1905. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/type_traits.hpp +0 -65
  1906. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/concurrency/basic.hpp +0 -46
  1907. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/concurrency/none.hpp +0 -80
  1908. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio.hpp +0 -77
  1909. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_client.hpp +0 -77
  1910. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_no_tls.hpp +0 -73
  1911. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_no_tls_client.hpp +0 -73
  1912. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/boost_config.hpp +0 -72
  1913. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/core.hpp +0 -297
  1914. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/core_client.hpp +0 -294
  1915. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug.hpp +0 -286
  1916. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug_asio.hpp +0 -77
  1917. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug_asio_no_tls.hpp +0 -73
  1918. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/minimal_client.hpp +0 -72
  1919. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/minimal_server.hpp +0 -312
  1920. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/connection.hpp +0 -1642
  1921. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/connection_base.hpp +0 -38
  1922. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/endpoint.hpp +0 -700
  1923. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/endpoint_base.hpp +0 -38
  1924. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/error.hpp +0 -277
  1925. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/extension.hpp +0 -102
  1926. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +0 -129
  1927. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +0 -817
  1928. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +0 -864
  1929. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/constants.hpp +0 -308
  1930. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/parser.hpp +0 -200
  1931. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/request.hpp +0 -191
  1932. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/response.hpp +0 -266
  1933. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/parser.hpp +0 -629
  1934. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/request.hpp +0 -124
  1935. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/response.hpp +0 -188
  1936. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/connection_impl.hpp +0 -2375
  1937. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/endpoint_impl.hpp +0 -269
  1938. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/utilities_impl.hpp +0 -87
  1939. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/basic.hpp +0 -199
  1940. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/levels.hpp +0 -203
  1941. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/stub.hpp +0 -119
  1942. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/syslog.hpp +0 -146
  1943. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/alloc.hpp +0 -105
  1944. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/message.hpp +0 -340
  1945. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/pool.hpp +0 -229
  1946. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/base.hpp +0 -299
  1947. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi00.hpp +0 -462
  1948. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi07.hpp +0 -78
  1949. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi08.hpp +0 -83
  1950. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +0 -1078
  1951. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/processor.hpp +0 -407
  1952. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/random/none.hpp +0 -60
  1953. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/random/random_device.hpp +0 -80
  1954. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/client_endpoint.hpp +0 -173
  1955. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/server_endpoint.hpp +0 -195
  1956. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/server.hpp +0 -33
  1957. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/sha1/sha1.hpp +0 -189
  1958. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/base.hpp +0 -232
  1959. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/connection.hpp +0 -1197
  1960. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/endpoint.hpp +0 -1182
  1961. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/base.hpp +0 -159
  1962. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/none.hpp +0 -372
  1963. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/tls.hpp +0 -474
  1964. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/base/connection.hpp +0 -238
  1965. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/base/endpoint.hpp +0 -77
  1966. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/base.hpp +0 -104
  1967. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/connection.hpp +0 -412
  1968. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/endpoint.hpp +0 -140
  1969. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/base.hpp +0 -133
  1970. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/connection.hpp +0 -714
  1971. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/endpoint.hpp +0 -222
  1972. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/base.hpp +0 -95
  1973. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/connection.hpp +0 -286
  1974. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/endpoint.hpp +0 -140
  1975. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/uri.hpp +0 -356
  1976. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/utf8_validator.hpp +0 -154
  1977. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/utilities.hpp +0 -180
  1978. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/version.hpp +0 -61
@@ -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,18 +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
85
86
  typedef std::contiguous_iterator_tag iterator_concept;
87
+ #endif
86
88
  typedef typename boost::intrusive::pointer_traits<Pointer>::element_type value_type;
87
89
 
88
90
  //Defining element_type to make libstdc++'s std::pointer_traits well-formed leads to ambiguity
89
91
  //due to LWG3446. So we need to specialize std::pointer_traits. See
90
- //https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96416 for details. /Many thanks to Jonathan Wakely
91
- //for explaning the issue.
92
+ //https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96416 for details. Many thanks to Jonathan Wakely
93
+ //for explaining the issue.
92
94
  #ifndef BOOST_GNU_STDLIB
93
95
  //Define element_
94
96
  typedef typename boost::intrusive::pointer_traits<Pointer>::element_type element_type;
95
97
  #endif
96
98
  typedef typename boost::intrusive::pointer_traits<Pointer>::difference_type difference_type;
99
+ typedef typename boost::intrusive::pointer_traits<Pointer>::size_type size_type;
97
100
  typedef typename dtl::if_c
98
101
  < IsConst
99
102
  , typename boost::intrusive::pointer_traits<Pointer>::template
@@ -118,15 +121,15 @@ class vec_iterator
118
121
  , nat>::type nonconst_iterator;
119
122
 
120
123
  public:
121
- BOOST_CONTAINER_FORCEINLINE
124
+ inline
122
125
  const Pointer &get_ptr() const BOOST_NOEXCEPT_OR_NOTHROW
123
126
  { return m_ptr; }
124
127
 
125
- BOOST_CONTAINER_FORCEINLINE
128
+ inline
126
129
  Pointer &get_ptr() BOOST_NOEXCEPT_OR_NOTHROW
127
130
  { return m_ptr; }
128
131
 
129
- BOOST_CONTAINER_FORCEINLINE explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW
132
+ inline explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW
130
133
  : m_ptr(ptr)
131
134
  {}
132
135
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
@@ -134,92 +137,93 @@ class vec_iterator
134
137
  public:
135
138
 
136
139
  //Constructors
137
- BOOST_CONTAINER_FORCEINLINE vec_iterator() BOOST_NOEXCEPT_OR_NOTHROW
140
+ inline vec_iterator() BOOST_NOEXCEPT_OR_NOTHROW
138
141
  : m_ptr() //Value initialization to achieve "null iterators" (N3644)
139
142
  {}
140
143
 
141
- BOOST_CONTAINER_FORCEINLINE vec_iterator(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW
144
+ inline vec_iterator(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW
142
145
  : m_ptr(other.get_ptr())
143
146
  {}
144
147
 
145
- BOOST_CONTAINER_FORCEINLINE vec_iterator(const nonconst_iterator &other) BOOST_NOEXCEPT_OR_NOTHROW
148
+ inline vec_iterator(const nonconst_iterator &other) BOOST_NOEXCEPT_OR_NOTHROW
146
149
  : m_ptr(other.get_ptr())
147
150
  {}
148
151
 
149
- BOOST_CONTAINER_FORCEINLINE vec_iterator & operator=(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW
152
+ inline vec_iterator & operator=(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW
150
153
  { m_ptr = other.get_ptr(); return *this; }
151
154
 
152
155
  //Pointer like operators
153
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
156
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
154
157
  reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
155
158
  { BOOST_ASSERT(!!m_ptr); return *m_ptr; }
156
159
 
157
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
160
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
158
161
  pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
159
162
  { return m_ptr; }
160
163
 
161
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
164
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
162
165
  reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
163
166
  { BOOST_ASSERT(!!m_ptr); return m_ptr[off]; }
164
167
 
165
168
  //Increment / Decrement
166
- BOOST_CONTAINER_FORCEINLINE vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
169
+ inline vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
167
170
  { BOOST_ASSERT(!!m_ptr); ++m_ptr; return *this; }
168
171
 
169
- BOOST_CONTAINER_FORCEINLINE vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
172
+ inline vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
170
173
  { BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr++); }
171
174
 
172
- BOOST_CONTAINER_FORCEINLINE vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
175
+ inline vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
173
176
  { BOOST_ASSERT(!!m_ptr); --m_ptr; return *this; }
174
177
 
175
- BOOST_CONTAINER_FORCEINLINE vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
178
+ inline vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
176
179
  { BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr--); }
177
180
 
178
181
  //Arithmetic
179
- BOOST_CONTAINER_FORCEINLINE vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
182
+ inline vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
180
183
  { BOOST_ASSERT(m_ptr || !off); m_ptr += off; return *this; }
181
184
 
182
- BOOST_CONTAINER_FORCEINLINE vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
185
+ inline vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
183
186
  { BOOST_ASSERT(m_ptr || !off); m_ptr -= off; return *this; }
184
187
 
185
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
188
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
186
189
  friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
187
190
  { BOOST_ASSERT(x.m_ptr || !off); return vec_iterator(x.m_ptr+off); }
188
191
 
189
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
192
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
190
193
  friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
191
194
  { BOOST_ASSERT(right.m_ptr || !off); right.m_ptr += off; return right; }
192
195
 
193
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
196
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
194
197
  friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
195
198
  { BOOST_ASSERT(left.m_ptr || !off); left.m_ptr -= off; return left; }
196
199
 
197
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
200
+ //Difference
201
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
198
202
  friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
199
203
  { return left.m_ptr - right.m_ptr; }
200
204
 
201
205
  //Comparison operators
202
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
206
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
203
207
  friend bool operator== (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
204
208
  { return l.m_ptr == r.m_ptr; }
205
209
 
206
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
210
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
207
211
  friend bool operator!= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
208
212
  { return l.m_ptr != r.m_ptr; }
209
213
 
210
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
214
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
211
215
  friend bool operator< (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
212
216
  { return l.m_ptr < r.m_ptr; }
213
217
 
214
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
218
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
215
219
  friend bool operator<= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
216
220
  { return l.m_ptr <= r.m_ptr; }
217
221
 
218
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
222
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
219
223
  friend bool operator> (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
220
224
  { return l.m_ptr > r.m_ptr; }
221
225
 
222
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
226
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
223
227
  friend bool operator>= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
224
228
  { return l.m_ptr >= r.m_ptr; }
225
229
  };
@@ -230,7 +234,7 @@ struct vector_insert_ordered_cursor
230
234
  typedef typename iterator_traits<BiDirPosConstIt>::value_type size_type;
231
235
  typedef typename iterator_traits<BiDirValueIt>::reference reference;
232
236
 
233
- BOOST_CONTAINER_FORCEINLINE vector_insert_ordered_cursor(BiDirPosConstIt posit, BiDirValueIt valueit)
237
+ inline vector_insert_ordered_cursor(BiDirPosConstIt posit, BiDirValueIt valueit)
234
238
  : last_position_it(posit), last_value_it(valueit)
235
239
  {}
236
240
 
@@ -244,34 +248,36 @@ struct vector_insert_ordered_cursor
244
248
  }
245
249
  }
246
250
 
247
- BOOST_CONTAINER_FORCEINLINE size_type get_pos() const
251
+ inline size_type get_pos() const
248
252
  { return *last_position_it; }
249
253
 
250
- BOOST_CONTAINER_FORCEINLINE reference get_val()
254
+ inline reference get_val()
251
255
  { return *last_value_it; }
252
256
 
253
257
  BiDirPosConstIt last_position_it;
254
258
  BiDirValueIt last_value_it;
255
259
  };
256
260
 
257
- struct initial_capacity_t{};
258
-
259
261
  template<class Pointer, bool IsConst>
260
- 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
261
263
  { return it.get_ptr(); }
262
264
 
263
265
  template<class Pointer, bool IsConst>
264
- 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
265
267
  { return it.get_ptr(); }
266
268
 
269
+ struct initial_capacity_t {};
270
+
267
271
  struct vector_uninitialized_size_t {};
268
- 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 {};
269
275
 
270
276
  template <class T>
271
277
  struct vector_value_traits_base
272
278
  {
273
- static const bool trivial_dctr = dtl::is_trivially_destructible<T>::value;
274
- static const bool trivial_dctr_after_move = has_trivial_destructor_after_move<T>::value;
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;
275
281
  };
276
282
 
277
283
  template <class Allocator>
@@ -309,22 +315,60 @@ struct vector_alloc_holder
309
315
  typedef typename allocator_traits_type::size_type size_type;
310
316
  typedef typename allocator_traits_type::value_type value_type;
311
317
 
312
- BOOST_CONTAINER_FORCEINLINE
313
- static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc, bool const propagate_allocator)
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:
354
+
355
+ template <bool PropagateAllocator>
356
+ inline static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc)
314
357
  {
315
- (void)propagate_allocator; (void)p; (void)to_alloc; (void)from_alloc;
358
+ (void)p; (void)to_alloc; (void)from_alloc;
316
359
  const bool all_storage_propagable = !allocator_traits_type::is_partially_propagable::value ||
317
360
  !allocator_traits_type::storage_is_unpropagable(from_alloc, p);
318
- 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));
319
363
  }
320
364
 
321
- BOOST_CONTAINER_FORCEINLINE
322
- 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)
323
367
  {
324
- (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;
325
369
  const bool all_storage_propagable = !allocator_traits_type::is_partially_propagable::value ||
326
370
  !(allocator_traits_type::storage_is_unpropagable(l_a, l_p) || allocator_traits_type::storage_is_unpropagable(r_a, r_p));
327
- 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));
328
372
  }
329
373
 
330
374
  //Constructor, does not throw
@@ -339,7 +383,7 @@ struct vector_alloc_holder
339
383
  : allocator_type(boost::forward<AllocConvertible>(a)), m_start(), m_size(), m_capacity()
340
384
  {}
341
385
 
342
- //Constructor, does not throw
386
+
343
387
  template<class AllocConvertible, class SizeType>
344
388
  vector_alloc_holder(vector_uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, SizeType initial_size)
345
389
  : allocator_type(boost::forward<AllocConvertible>(a))
@@ -347,19 +391,8 @@ struct vector_alloc_holder
347
391
  //Size is initialized here so vector should only call uninitialized_xxx after this
348
392
  , m_size(static_cast<stored_size_type>(initial_size))
349
393
  , m_capacity()
350
- {
351
- if (initial_size > size_type(-1)){
352
- boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
353
- }
354
- else if(initial_size){
355
- pointer reuse = pointer();
356
- size_type final_cap = static_cast<size_type>(initial_size);
357
- m_start = this->allocation_command(allocate_new, final_cap, final_cap, reuse);
358
- this->set_stored_capacity(final_cap);
359
- }
360
- }
394
+ { this->do_initial_capacity(initial_size); }
361
395
 
362
- //Constructor, does not throw
363
396
  template<class SizeType>
364
397
  vector_alloc_holder(vector_uninitialized_size_t, SizeType initial_size)
365
398
  : allocator_type()
@@ -367,27 +400,7 @@ struct vector_alloc_holder
367
400
  //Size is initialized here so vector should only call uninitialized_xxx after this
368
401
  , m_size(static_cast<stored_size_type>(initial_size))
369
402
  , m_capacity()
370
- {
371
- if (initial_size > size_type(-1)){
372
- boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
373
- }
374
- else if(initial_size){
375
- pointer reuse = pointer();
376
- size_type final_cap = initial_size;
377
- m_start = this->allocation_command(allocate_new, final_cap, final_cap, reuse);
378
- this->set_stored_capacity(final_cap);
379
- }
380
- }
381
-
382
- vector_alloc_holder(BOOST_RV_REF(vector_alloc_holder) holder) BOOST_NOEXCEPT_OR_NOTHROW
383
- : allocator_type(BOOST_MOVE_BASE(allocator_type, holder))
384
- , m_start(holder.m_start)
385
- , m_size(holder.m_size)
386
- , m_capacity(holder.m_capacity)
387
- {
388
- holder.m_start = pointer();
389
- holder.m_size = holder.m_capacity = 0;
390
- }
403
+ { this->do_initial_capacity(initial_size); }
391
404
 
392
405
  vector_alloc_holder(initial_capacity_t, pointer p, size_type n)
393
406
  BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<allocator_type>::value)
@@ -406,43 +419,71 @@ struct vector_alloc_holder
406
419
  , m_capacity(n)
407
420
  {}
408
421
 
409
- 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
410
451
  {
411
452
  if(this->m_capacity){
412
453
  this->deallocate(this->m_start, this->m_capacity);
413
454
  }
414
455
  }
415
456
 
416
- BOOST_CONTAINER_FORCEINLINE void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
457
+ inline void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
417
458
  { this->m_size = static_cast<stored_size_type>(s); }
418
459
 
419
- BOOST_CONTAINER_FORCEINLINE void dec_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
420
- { this->m_size -= static_cast<stored_size_type>(s); }
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); }
421
462
 
422
- BOOST_CONTAINER_FORCEINLINE void inc_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
423
- { this->m_size += static_cast<stored_size_type>(s); }
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); }
424
465
 
425
- BOOST_CONTAINER_FORCEINLINE void set_stored_capacity(size_type c) BOOST_NOEXCEPT_OR_NOTHROW
466
+ inline void set_stored_capacity(size_type c) BOOST_NOEXCEPT_OR_NOTHROW
426
467
  { this->m_capacity = static_cast<stored_size_type>(c); }
427
468
 
428
- BOOST_CONTAINER_FORCEINLINE pointer allocation_command(boost::container::allocation_type command,
469
+ inline pointer allocation_command(boost::container::allocation_type command,
429
470
  size_type limit_size, size_type &prefer_in_recvd_out_size, pointer &reuse)
430
471
  {
431
472
  typedef typename dtl::version<allocator_type>::type alloc_version;
432
473
  return this->priv_allocation_command(alloc_version(), command, limit_size, prefer_in_recvd_out_size, reuse);
433
474
  }
434
475
 
435
- BOOST_CONTAINER_FORCEINLINE pointer allocate(size_type n)
476
+ inline pointer allocate(size_type n)
436
477
  {
437
478
  const size_type max_alloc = allocator_traits_type::max_size(this->alloc());
438
479
  const size_type max = max_alloc <= stored_size_type(-1) ? max_alloc : stored_size_type(-1);
439
- if ( max < n )
480
+ if (BOOST_UNLIKELY(max < n) )
440
481
  boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
441
482
 
442
483
  return allocator_traits_type::allocate(this->alloc(), n);
443
484
  }
444
485
 
445
- BOOST_CONTAINER_FORCEINLINE void deallocate(const pointer &p, size_type n)
486
+ inline void deallocate(const pointer &p, size_type n)
446
487
  {
447
488
  allocator_traits_type::deallocate(this->alloc(), p, n);
448
489
  }
@@ -450,7 +491,7 @@ struct vector_alloc_holder
450
491
  bool try_expand_fwd(size_type at_least)
451
492
  {
452
493
  //There is not enough memory, try to expand the old one
453
- const size_type new_cap = this->capacity() + at_least;
494
+ const size_type new_cap = size_type(this->capacity() + at_least);
454
495
  size_type real_cap = new_cap;
455
496
  pointer reuse = this->start();
456
497
  bool const success = !!this->allocation_command(expand_fwd, new_cap, real_cap, reuse);
@@ -470,8 +511,8 @@ struct vector_alloc_holder
470
511
  BOOST_ASSERT(additional_objects > size_type(this->m_capacity - this->m_size));
471
512
  size_type max = allocator_traits_type::max_size(this->alloc());
472
513
  (clamp_by_stored_size_type<size_type>)(max, stored_size_type());
473
- const size_type remaining_cap = max - size_type(this->m_capacity);
474
- const size_type min_additional_cap = additional_objects - size_type(this->m_capacity - this->m_size);
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));
475
516
 
476
517
  if ( remaining_cap < min_additional_cap )
477
518
  boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
@@ -499,22 +540,22 @@ struct vector_alloc_holder
499
540
  x.m_size = x.m_capacity = 0;
500
541
  }
501
542
 
502
- BOOST_CONTAINER_FORCEINLINE allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW
543
+ inline allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW
503
544
  { return *this; }
504
545
 
505
- BOOST_CONTAINER_FORCEINLINE const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
546
+ inline const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
506
547
  { return *this; }
507
548
 
508
- BOOST_CONTAINER_FORCEINLINE const pointer &start() const BOOST_NOEXCEPT_OR_NOTHROW
549
+ inline pointer start() const BOOST_NOEXCEPT_OR_NOTHROW
509
550
  { return m_start; }
510
- BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
551
+ inline size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
511
552
  { return m_capacity; }
512
- BOOST_CONTAINER_FORCEINLINE void start(const pointer &p) BOOST_NOEXCEPT_OR_NOTHROW
553
+ inline void start(const pointer &p) BOOST_NOEXCEPT_OR_NOTHROW
513
554
  { m_start = p; }
514
- BOOST_CONTAINER_FORCEINLINE void capacity(const size_type &c) BOOST_NOEXCEPT_OR_NOTHROW
555
+ inline void capacity(const size_type &c) BOOST_NOEXCEPT_OR_NOTHROW
515
556
  { BOOST_ASSERT( c <= stored_size_type(-1)); this->set_stored_capacity(c); }
516
557
 
517
- static BOOST_CONTAINER_FORCEINLINE void on_capacity_overflow()
558
+ static inline void on_capacity_overflow()
518
559
  { }
519
560
 
520
561
  private:
@@ -539,7 +580,7 @@ struct vector_alloc_holder
539
580
  BOOST_ASSERT( (command & allocate_new));
540
581
  BOOST_ASSERT(!(command & nothrow_allocation));
541
582
  //First detect overflow on smaller stored_size_types
542
- if (limit_size > stored_size_type(-1)){
583
+ if (BOOST_UNLIKELY(limit_size > stored_size_type(-1))){
543
584
  boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
544
585
  }
545
586
  (clamp_by_stored_size_type<size_type>)(prefer_in_recvd_out_size, stored_size_type());
@@ -554,7 +595,7 @@ struct vector_alloc_holder
554
595
  pointer &reuse)
555
596
  {
556
597
  //First detect overflow on smaller stored_size_types
557
- if (limit_size > stored_size_type(-1)){
598
+ if (BOOST_UNLIKELY(limit_size > stored_size_type(-1))){
558
599
  boost::container::throw_length_error("get_next_capacity, allocator's max size reached");
559
600
  }
560
601
  (clamp_by_stored_size_type<size_type>)(prefer_in_recvd_out_size, stored_size_type());
@@ -602,7 +643,7 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
602
643
  template<class AllocConvertible>
603
644
  vector_alloc_holder(vector_uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, size_type initial_size)
604
645
  : allocator_type(boost::forward<AllocConvertible>(a))
605
- , m_size(initial_size) //Size is initialized here...
646
+ , m_size(static_cast<stored_size_type>(initial_size)) //Size is initialized here...
606
647
  {
607
648
  //... and capacity here, so vector, must call uninitialized_xxx in the derived constructor
608
649
  this->priv_first_allocation(initial_size);
@@ -611,7 +652,7 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
611
652
  //Constructor, does not throw
612
653
  vector_alloc_holder(vector_uninitialized_size_t, size_type initial_size)
613
654
  : allocator_type()
614
- , m_size(initial_size) //Size is initialized here...
655
+ , m_size(static_cast<stored_size_type>(initial_size)) //Size is initialized here...
615
656
  {
616
657
  //... and capacity here, so vector, must call uninitialized_xxx in the derived constructor
617
658
  this->priv_first_allocation(initial_size);
@@ -640,29 +681,27 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
640
681
  (this->alloc(), boost::movelib::to_raw_pointer(holder.start()), n, boost::movelib::to_raw_pointer(this->start()));
641
682
  }
642
683
 
643
- static BOOST_CONTAINER_FORCEINLINE void on_capacity_overflow()
684
+ static inline void on_capacity_overflow()
644
685
  { allocator_type::on_capacity_overflow(); }
645
686
 
646
- BOOST_CONTAINER_FORCEINLINE void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
687
+ inline void set_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
647
688
  { this->m_size = static_cast<stored_size_type>(s); }
648
689
 
649
- BOOST_CONTAINER_FORCEINLINE void dec_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
650
- { this->m_size -= static_cast<stored_size_type>(s); }
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); }
651
692
 
652
- BOOST_CONTAINER_FORCEINLINE void inc_stored_size(size_type s) BOOST_NOEXCEPT_OR_NOTHROW
653
- { this->m_size += static_cast<stored_size_type>(s); }
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); }
654
695
 
655
- BOOST_CONTAINER_FORCEINLINE void priv_first_allocation(size_type cap)
696
+ inline void priv_first_allocation(size_type cap)
656
697
  {
657
698
  if(cap > allocator_type::internal_capacity){
658
699
  on_capacity_overflow();
659
700
  }
660
701
  }
661
702
 
662
- BOOST_CONTAINER_FORCEINLINE void deep_swap(vector_alloc_holder &x)
663
- {
664
- this->priv_deep_swap(x);
665
- }
703
+ inline void deep_swap(vector_alloc_holder &x)
704
+ { this->priv_deep_swap(x); }
666
705
 
667
706
  template<class OtherAllocator, class OtherStoredSizeType, class OtherAllocatorVersion>
668
707
  void deep_swap(vector_alloc_holder<OtherAllocator, OtherStoredSizeType, OtherAllocatorVersion> &x)
@@ -674,30 +713,29 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
674
713
  this->priv_deep_swap(x);
675
714
  }
676
715
 
677
- 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
678
717
  { //Containers with version 0 allocators can't be moved without moving elements one by one
679
718
  on_capacity_overflow();
680
719
  }
681
720
 
682
-
683
- BOOST_CONTAINER_FORCEINLINE void steal_resources(vector_alloc_holder &)
721
+ inline void steal_resources(vector_alloc_holder &)
684
722
  { //Containers with version 0 allocators can't be moved without moving elements one by one
685
723
  on_capacity_overflow();
686
724
  }
687
725
 
688
- BOOST_CONTAINER_FORCEINLINE allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW
726
+ inline allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW
689
727
  { return *this; }
690
728
 
691
- BOOST_CONTAINER_FORCEINLINE const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
729
+ inline const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
692
730
  { return *this; }
693
731
 
694
- BOOST_CONTAINER_FORCEINLINE bool try_expand_fwd(size_type at_least)
732
+ inline bool try_expand_fwd(size_type at_least)
695
733
  { return !at_least; }
696
734
 
697
- BOOST_CONTAINER_FORCEINLINE pointer start() const BOOST_NOEXCEPT_OR_NOTHROW
735
+ inline pointer start() const BOOST_NOEXCEPT_OR_NOTHROW
698
736
  { return allocator_type::internal_storage(); }
699
737
 
700
- BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
738
+ inline size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
701
739
  { return allocator_type::internal_capacity; }
702
740
 
703
741
  stored_size_type m_size;
@@ -722,6 +760,7 @@ struct vector_alloc_holder<Allocator, StoredSizeType, version_0>
722
760
  };
723
761
 
724
762
  struct growth_factor_60;
763
+ struct growth_factor_100;
725
764
 
726
765
  template<class Options, class AllocatorSizeType>
727
766
  struct get_vector_opt
@@ -774,8 +813,11 @@ public:
774
813
  typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<const_iterator>) const_reverse_iterator;
775
814
 
776
815
  private:
777
-
778
816
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
817
+ //`allocator_type::value_type` must match container's `value type`. If this
818
+ //assertion fails, please review your allocator definition.
819
+ BOOST_CONTAINER_STATIC_ASSERT((dtl::is_same<value_type, typename allocator_traits_t::value_type>::value));
820
+
779
821
  typedef typename boost::container::
780
822
  allocator_traits<allocator_type>::size_type alloc_size_type;
781
823
  typedef typename get_vector_opt<Options, alloc_size_type>::type options_type;
@@ -784,7 +826,7 @@ private:
784
826
  typedef value_less<T> value_less_t;
785
827
 
786
828
  //If provided the stored_size option must specify a type that is equal or a type that is smaller.
787
- BOOST_STATIC_ASSERT( (sizeof(stored_size_type) < sizeof(alloc_size_type) ||
829
+ BOOST_CONTAINER_STATIC_ASSERT( (sizeof(stored_size_type) < sizeof(alloc_size_type) ||
788
830
  dtl::is_same<stored_size_type, alloc_size_type>::value) );
789
831
 
790
832
  typedef typename dtl::version<allocator_type>::type alloc_version;
@@ -799,36 +841,84 @@ private:
799
841
 
800
842
 
801
843
  protected:
802
- BOOST_CONTAINER_FORCEINLINE
803
- static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc, bool const propagate_allocator)
804
- { return alloc_holder_t::is_propagable_from(from_alloc, p, to_alloc, propagate_allocator); }
844
+ template <bool PropagateAllocator>
845
+ inline static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc)
846
+ { return alloc_holder_t::template is_propagable_from<PropagateAllocator>(from_alloc, p, to_alloc); }
805
847
 
806
- BOOST_CONTAINER_FORCEINLINE
807
- static bool are_swap_propagable( const allocator_type &l_a, pointer l_p
808
- , const allocator_type &r_a, pointer r_p, bool const propagate_allocator)
809
- { return alloc_holder_t::are_swap_propagable(l_a, l_p, r_a, r_p, propagate_allocator); }
848
+ template <bool PropagateAllocator>
849
+ inline static bool are_swap_propagable( const allocator_type &l_a, pointer l_p
850
+ , const allocator_type &r_a, pointer r_p)
851
+ { return alloc_holder_t::template are_swap_propagable<PropagateAllocator>(l_a, l_p, r_a, r_p); }
810
852
 
811
853
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
812
854
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
813
855
  private:
814
856
  BOOST_COPYABLE_AND_MOVABLE(vector)
815
857
  typedef vector_value_traits<allocator_type> value_traits;
816
- typedef constant_iterator<T, difference_type> cvalue_iterator;
858
+ typedef constant_iterator<T> cvalue_iterator;
817
859
 
818
860
  protected:
819
861
 
820
- BOOST_CONTAINER_FORCEINLINE void steal_resources(vector &x)
862
+ inline void steal_resources(vector &x)
821
863
  { return this->m_holder.steal_resources(x.m_holder); }
822
864
 
865
+ inline void protected_set_size(size_type n)
866
+ { this->m_holder.m_size = static_cast<stored_size_type>(n); }
867
+
823
868
  template<class AllocFwd>
824
- BOOST_CONTAINER_FORCEINLINE vector(initial_capacity_t, pointer initial_memory, size_type capacity, BOOST_FWD_REF(AllocFwd) a)
825
- : m_holder(initial_capacity_t(), initial_memory, capacity, ::boost::forward<AllocFwd>(a))
869
+ inline vector(initial_capacity_t, pointer initial_memory, size_type cap, BOOST_FWD_REF(AllocFwd) a)
870
+ : m_holder(initial_capacity_t(), initial_memory, cap, ::boost::forward<AllocFwd>(a))
826
871
  {}
827
872
 
828
- BOOST_CONTAINER_FORCEINLINE vector(initial_capacity_t, pointer initial_memory, size_type capacity)
829
- : m_holder(initial_capacity_t(), initial_memory, capacity)
873
+ template<class AllocFwd>
874
+ inline vector(initial_capacity_t, pointer initial_memory, size_type cap, BOOST_FWD_REF(AllocFwd) a, vector &x)
875
+ : m_holder(initial_capacity_t(), initial_memory, cap, ::boost::forward<AllocFwd>(a))
876
+ {
877
+ allocator_type &this_al = this->get_stored_allocator();
878
+ if (this->template is_propagable_from<true>(x.get_stored_allocator(), x.data(), this_al)) {
879
+ this->steal_resources(x);
880
+ }
881
+ else {
882
+ const size_type sz = x.size();
883
+ ::boost::container::uninitialized_move_alloc_n_source
884
+ ( this_al, x.priv_raw_begin(), sz
885
+ //Use launder to stop false positives from -Warray-bounds
886
+ , boost::move_detail::launder(this->priv_raw_begin()));
887
+ this->protected_set_size(sz);
888
+ x.clear();
889
+ }
890
+ }
891
+
892
+ inline vector(initial_capacity_t, pointer initial_memory, size_type cap)
893
+ : m_holder(initial_capacity_t(), initial_memory, cap)
830
894
  {}
831
895
 
896
+ template<class SizeType, class AllocFwd>
897
+ inline vector(maybe_initial_capacity_t, pointer p, SizeType initial_capacity, BOOST_FWD_REF(AllocFwd) a)
898
+ : m_holder(maybe_initial_capacity_t(), p, initial_capacity, ::boost::forward<AllocFwd>(a))
899
+ {
900
+ #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
901
+ this->num_alloc += size_type(p != pointer());
902
+ #endif
903
+ }
904
+
905
+ template<class SizeType>
906
+ inline vector(maybe_initial_capacity_t, pointer p, SizeType initial_capacity)
907
+ : m_holder(maybe_initial_capacity_t(), p, initial_capacity)
908
+ {
909
+ #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
910
+ this->num_alloc += size_type(p != pointer());
911
+ #endif
912
+ }
913
+
914
+ template <class U>
915
+ void protected_init_n(const size_type new_size, const U& u)
916
+ {
917
+ BOOST_ASSERT(this->empty());
918
+ this->priv_resize_proxy(u).uninitialized_copy_n_and_update(this->m_holder.alloc(), this->priv_raw_begin(), new_size);
919
+ this->m_holder.set_stored_size(new_size);
920
+ }
921
+
832
922
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
833
923
 
834
924
  public:
@@ -1027,7 +1117,7 @@ private:
1027
1117
  //! <b>Complexity</b>: Constant.
1028
1118
  vector(BOOST_RV_REF(vector) x) BOOST_NOEXCEPT_OR_NOTHROW
1029
1119
  : m_holder(boost::move(x.m_holder))
1030
- { BOOST_STATIC_ASSERT((!allocator_traits_type::is_partially_propagable::value)); }
1120
+ { BOOST_CONTAINER_STATIC_ASSERT((!allocator_traits_type::is_partially_propagable::value)); }
1031
1121
 
1032
1122
  #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1033
1123
  //! <b>Effects</b>: Constructs a vector that will use a copy of allocator a
@@ -1096,11 +1186,11 @@ private:
1096
1186
  vector(BOOST_RV_REF(vector) x, const allocator_type &a)
1097
1187
  : m_holder( vector_uninitialized_size, a
1098
1188
  //In this allocator move constructor the allocator won't be propagated --v
1099
- , is_propagable_from(x.get_stored_allocator(), x.m_holder.start(), a, false) ? 0 : x.size()
1189
+ , is_propagable_from<false>(x.get_stored_allocator(), x.m_holder.start(), a) ? 0 : x.size()
1100
1190
  )
1101
1191
  {
1102
1192
  //In this allocator move constructor the allocator won't be propagated ---v
1103
- if(is_propagable_from(x.get_stored_allocator(), x.m_holder.start(), a, false)){
1193
+ if(is_propagable_from<false>(x.get_stored_allocator(), x.m_holder.start(), a)){
1104
1194
  this->m_holder.steal_resources(x.m_holder);
1105
1195
  }
1106
1196
  else{
@@ -1135,7 +1225,7 @@ private:
1135
1225
  //! <b>Throws</b>: If memory allocation throws or T's copy/move constructor/assignment throws.
1136
1226
  //!
1137
1227
  //! <b>Complexity</b>: Linear to the number of elements in x.
1138
- BOOST_CONTAINER_FORCEINLINE vector& operator=(BOOST_COPY_ASSIGN_REF(vector) x)
1228
+ inline vector& operator=(BOOST_COPY_ASSIGN_REF(vector) x)
1139
1229
  {
1140
1230
  if (BOOST_LIKELY(&x != this)){
1141
1231
  this->priv_copy_assign(x);
@@ -1147,7 +1237,7 @@ private:
1147
1237
  //! <b>Effects</b>: Make *this container contains elements from il.
1148
1238
  //!
1149
1239
  //! <b>Complexity</b>: Linear to the range [il.begin(), il.end()).
1150
- BOOST_CONTAINER_FORCEINLINE vector& operator=(std::initializer_list<value_type> il)
1240
+ inline vector& operator=(std::initializer_list<value_type> il)
1151
1241
  {
1152
1242
  this->assign(il.begin(), il.end());
1153
1243
  return *this;
@@ -1165,7 +1255,7 @@ private:
1165
1255
  //! <b>Complexity</b>: Constant if allocator_traits_type::
1166
1256
  //! propagate_on_container_move_assignment is true or
1167
1257
  //! this->get>allocator() == x.get_allocator(). Linear otherwise.
1168
- BOOST_CONTAINER_FORCEINLINE vector& operator=(BOOST_RV_REF(vector) x)
1258
+ inline vector& operator=(BOOST_RV_REF(vector) x)
1169
1259
  BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value
1170
1260
  || allocator_traits_type::is_always_equal::value)
1171
1261
  {
@@ -1188,7 +1278,7 @@ private:
1188
1278
  //!
1189
1279
  //! <b>Note</b>: Non-standard extension to support static_vector
1190
1280
  template<class OtherA>
1191
- BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and
1281
+ inline typename dtl::enable_if_and
1192
1282
  < vector&
1193
1283
  , dtl::is_version<typename real_allocator<T, OtherA>::type, 0>
1194
1284
  , dtl::is_different<typename real_allocator<T, OtherA>::type, allocator_type>
@@ -1210,7 +1300,7 @@ private:
1210
1300
  //!
1211
1301
  //! <b>Note</b>: Non-standard extension to support static_vector
1212
1302
  template<class OtherA>
1213
- BOOST_CONTAINER_FORCEINLINE typename dtl::enable_if_and
1303
+ inline typename dtl::enable_if_and
1214
1304
  < vector&
1215
1305
  , dtl::is_version<typename real_allocator<T, OtherA>::type, 0>
1216
1306
  , dtl::is_different<typename real_allocator<T, OtherA>::type, allocator_type>
@@ -1267,7 +1357,7 @@ private:
1267
1357
  //! <b>Throws</b>: If memory allocation throws or
1268
1358
  //! T's constructor from dereferencing iniializer_list iterator throws.
1269
1359
  //!
1270
- BOOST_CONTAINER_FORCEINLINE void assign(std::initializer_list<T> il)
1360
+ inline void assign(std::initializer_list<T> il)
1271
1361
  {
1272
1362
  this->assign(il.begin(), il.end());
1273
1363
  }
@@ -1290,10 +1380,11 @@ private:
1290
1380
  >::type * = 0)
1291
1381
  )
1292
1382
  {
1383
+ typedef typename iter_size<FwdIt>::type it_size_type;
1293
1384
  //For Fwd iterators the standard only requires EmplaceConstructible and assignable from *first
1294
1385
  //so we can't do any backwards allocation
1295
- const typename iterator_traits<FwdIt>::size_type sz = boost::container::iterator_distance(first, last);
1296
- if (sz > size_type(-1)){
1386
+ const it_size_type sz = boost::container::iterator_udistance(first, last);
1387
+ if (BOOST_UNLIKELY(sz > size_type(-1))){
1297
1388
  boost::container::throw_length_error("vector::assign, FwdIt's max length reached");
1298
1389
  }
1299
1390
 
@@ -1337,7 +1428,7 @@ private:
1337
1428
  //! T's copy/move constructor/assignment throws.
1338
1429
  //!
1339
1430
  //! <b>Complexity</b>: Linear to n.
1340
- BOOST_CONTAINER_FORCEINLINE void assign(size_type n, const value_type& val)
1431
+ inline void assign(size_type n, const value_type& val)
1341
1432
  { this->assign(cvalue_iterator(val, n), cvalue_iterator()); }
1342
1433
 
1343
1434
  //! <b>Effects</b>: Returns a copy of the internal allocator.
@@ -1345,7 +1436,7 @@ private:
1345
1436
  //! <b>Throws</b>: If allocator's copy constructor throws.
1346
1437
  //!
1347
1438
  //! <b>Complexity</b>: Constant.
1348
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1439
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1349
1440
  { return this->m_holder.alloc(); }
1350
1441
 
1351
1442
  //! <b>Effects</b>: Returns a reference to the internal allocator.
@@ -1355,7 +1446,7 @@ private:
1355
1446
  //! <b>Complexity</b>: Constant.
1356
1447
  //!
1357
1448
  //! <b>Note</b>: Non-standard extension.
1358
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1449
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1359
1450
  stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
1360
1451
  { return this->m_holder.alloc(); }
1361
1452
 
@@ -1366,7 +1457,7 @@ private:
1366
1457
  //! <b>Complexity</b>: Constant.
1367
1458
  //!
1368
1459
  //! <b>Note</b>: Non-standard extension.
1369
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1460
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1370
1461
  const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
1371
1462
  { return this->m_holder.alloc(); }
1372
1463
 
@@ -1381,7 +1472,7 @@ private:
1381
1472
  //! <b>Throws</b>: Nothing.
1382
1473
  //!
1383
1474
  //! <b>Complexity</b>: Constant.
1384
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
1475
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
1385
1476
  { return iterator(this->m_holder.start()); }
1386
1477
 
1387
1478
  //! <b>Effects</b>: Returns a const_iterator to the first element contained in the vector.
@@ -1389,7 +1480,7 @@ private:
1389
1480
  //! <b>Throws</b>: Nothing.
1390
1481
  //!
1391
1482
  //! <b>Complexity</b>: Constant.
1392
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
1483
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
1393
1484
  { return const_iterator(this->m_holder.start()); }
1394
1485
 
1395
1486
  //! <b>Effects</b>: Returns an iterator to the end of the vector.
@@ -1397,10 +1488,10 @@ private:
1397
1488
  //! <b>Throws</b>: Nothing.
1398
1489
  //!
1399
1490
  //! <b>Complexity</b>: Constant.
1400
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE iterator end() BOOST_NOEXCEPT_OR_NOTHROW
1491
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline iterator end() BOOST_NOEXCEPT_OR_NOTHROW
1401
1492
  {
1402
1493
  iterator it (this->m_holder.start());
1403
- it += this->m_holder.m_size;
1494
+ it += difference_type(this->m_holder.m_size);
1404
1495
  return it; //Adding zero to null pointer is allowed (non-UB)
1405
1496
  }
1406
1497
 
@@ -1409,7 +1500,7 @@ private:
1409
1500
  //! <b>Throws</b>: Nothing.
1410
1501
  //!
1411
1502
  //! <b>Complexity</b>: Constant.
1412
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
1503
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
1413
1504
  { return this->cend(); }
1414
1505
 
1415
1506
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
@@ -1418,7 +1509,7 @@ private:
1418
1509
  //! <b>Throws</b>: Nothing.
1419
1510
  //!
1420
1511
  //! <b>Complexity</b>: Constant.
1421
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
1512
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
1422
1513
  { return reverse_iterator(this->end()); }
1423
1514
 
1424
1515
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
@@ -1427,7 +1518,7 @@ private:
1427
1518
  //! <b>Throws</b>: Nothing.
1428
1519
  //!
1429
1520
  //! <b>Complexity</b>: Constant.
1430
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1521
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1431
1522
  { return this->crbegin(); }
1432
1523
 
1433
1524
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
@@ -1436,7 +1527,7 @@ private:
1436
1527
  //! <b>Throws</b>: Nothing.
1437
1528
  //!
1438
1529
  //! <b>Complexity</b>: Constant.
1439
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
1530
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
1440
1531
  { return reverse_iterator(this->begin()); }
1441
1532
 
1442
1533
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
@@ -1445,7 +1536,7 @@ private:
1445
1536
  //! <b>Throws</b>: Nothing.
1446
1537
  //!
1447
1538
  //! <b>Complexity</b>: Constant.
1448
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
1539
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
1449
1540
  { return this->crend(); }
1450
1541
 
1451
1542
  //! <b>Effects</b>: Returns a const_iterator to the first element contained in the vector.
@@ -1453,7 +1544,7 @@ private:
1453
1544
  //! <b>Throws</b>: Nothing.
1454
1545
  //!
1455
1546
  //! <b>Complexity</b>: Constant.
1456
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1547
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1457
1548
  { return const_iterator(this->m_holder.start()); }
1458
1549
 
1459
1550
  //! <b>Effects</b>: Returns a const_iterator to the end of the vector.
@@ -1461,10 +1552,10 @@ private:
1461
1552
  //! <b>Throws</b>: Nothing.
1462
1553
  //!
1463
1554
  //! <b>Complexity</b>: Constant.
1464
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
1555
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
1465
1556
  {
1466
1557
  const_iterator it (this->m_holder.start());
1467
- it += this->m_holder.m_size;
1558
+ it += difference_type(this->m_holder.m_size);
1468
1559
  return it; //Adding zero to null pointer is allowed (non-UB)
1469
1560
  }
1470
1561
 
@@ -1474,7 +1565,7 @@ private:
1474
1565
  //! <b>Throws</b>: Nothing.
1475
1566
  //!
1476
1567
  //! <b>Complexity</b>: Constant.
1477
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1568
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
1478
1569
  { return const_reverse_iterator(this->end());}
1479
1570
 
1480
1571
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
@@ -1483,7 +1574,7 @@ private:
1483
1574
  //! <b>Throws</b>: Nothing.
1484
1575
  //!
1485
1576
  //! <b>Complexity</b>: Constant.
1486
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
1577
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
1487
1578
  { return const_reverse_iterator(this->begin()); }
1488
1579
 
1489
1580
  //////////////////////////////////////////////
@@ -1497,7 +1588,7 @@ private:
1497
1588
  //! <b>Throws</b>: Nothing.
1498
1589
  //!
1499
1590
  //! <b>Complexity</b>: Constant.
1500
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
1591
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
1501
1592
  { return !this->m_holder.m_size; }
1502
1593
 
1503
1594
  //! <b>Effects</b>: Returns the number of the elements contained in the vector.
@@ -1505,7 +1596,7 @@ private:
1505
1596
  //! <b>Throws</b>: Nothing.
1506
1597
  //!
1507
1598
  //! <b>Complexity</b>: Constant.
1508
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
1599
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
1509
1600
  { return this->m_holder.m_size; }
1510
1601
 
1511
1602
  //! <b>Effects</b>: Returns the largest possible size of the vector.
@@ -1513,7 +1604,7 @@ private:
1513
1604
  //! <b>Throws</b>: Nothing.
1514
1605
  //!
1515
1606
  //! <b>Complexity</b>: Constant.
1516
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
1607
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
1517
1608
  { return allocator_traits_type::max_size(this->m_holder.alloc()); }
1518
1609
 
1519
1610
  //! <b>Effects</b>: Inserts or erases elements at the end such that
@@ -1522,7 +1613,7 @@ private:
1522
1613
  //! <b>Throws</b>: If memory allocation throws, or T's copy/move or value initialization throws.
1523
1614
  //!
1524
1615
  //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1525
- BOOST_CONTAINER_FORCEINLINE void resize(size_type new_size)
1616
+ inline void resize(size_type new_size)
1526
1617
  { this->priv_resize(new_size, value_init, alloc_version()); }
1527
1618
 
1528
1619
  //! <b>Effects</b>: Inserts or erases elements at the end such that
@@ -1533,7 +1624,7 @@ private:
1533
1624
  //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1534
1625
  //!
1535
1626
  //! <b>Note</b>: Non-standard extension
1536
- BOOST_CONTAINER_FORCEINLINE void resize(size_type new_size, default_init_t)
1627
+ inline void resize(size_type new_size, default_init_t)
1537
1628
  { this->priv_resize(new_size, default_init, alloc_version()); }
1538
1629
 
1539
1630
  //! <b>Effects</b>: Inserts or erases elements at the end such that
@@ -1542,7 +1633,7 @@ private:
1542
1633
  //! <b>Throws</b>: If memory allocation throws, or T's copy/move constructor throws.
1543
1634
  //!
1544
1635
  //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1545
- BOOST_CONTAINER_FORCEINLINE void resize(size_type new_size, const T& x)
1636
+ inline void resize(size_type new_size, const T& x)
1546
1637
  { this->priv_resize(new_size, x, alloc_version()); }
1547
1638
 
1548
1639
  //! <b>Effects</b>: Number of elements for which memory has been allocated.
@@ -1551,7 +1642,7 @@ private:
1551
1642
  //! <b>Throws</b>: Nothing.
1552
1643
  //!
1553
1644
  //! <b>Complexity</b>: Constant.
1554
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
1645
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline size_type capacity() const BOOST_NOEXCEPT_OR_NOTHROW
1555
1646
  { return this->m_holder.capacity(); }
1556
1647
 
1557
1648
  //! <b>Effects</b>: If n is less than or equal to capacity(), this call has no
@@ -1560,7 +1651,7 @@ private:
1560
1651
  //! n; otherwise, capacity() is unchanged. In either case, size() is unchanged.
1561
1652
  //!
1562
1653
  //! <b>Throws</b>: If memory allocation allocation throws or T's copy/move constructor throws.
1563
- BOOST_CONTAINER_FORCEINLINE void reserve(size_type new_cap)
1654
+ inline void reserve(size_type new_cap)
1564
1655
  {
1565
1656
  if (this->capacity() < new_cap){
1566
1657
  this->priv_move_to_new_buffer(new_cap, alloc_version());
@@ -1573,7 +1664,7 @@ private:
1573
1664
  //! <b>Throws</b>: If memory allocation throws, or T's copy/move constructor throws.
1574
1665
  //!
1575
1666
  //! <b>Complexity</b>: Linear to size().
1576
- BOOST_CONTAINER_FORCEINLINE void shrink_to_fit()
1667
+ inline void shrink_to_fit()
1577
1668
  { this->priv_shrink_to_fit(alloc_version()); }
1578
1669
 
1579
1670
  //////////////////////////////////////////////
@@ -1590,7 +1681,7 @@ private:
1590
1681
  //! <b>Throws</b>: Nothing.
1591
1682
  //!
1592
1683
  //! <b>Complexity</b>: Constant.
1593
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference front() BOOST_NOEXCEPT_OR_NOTHROW
1684
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference front() BOOST_NOEXCEPT_OR_NOTHROW
1594
1685
  {
1595
1686
  BOOST_ASSERT(!this->empty());
1596
1687
  return *this->m_holder.start();
@@ -1604,7 +1695,7 @@ private:
1604
1695
  //! <b>Throws</b>: Nothing.
1605
1696
  //!
1606
1697
  //! <b>Complexity</b>: Constant.
1607
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
1698
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
1608
1699
  {
1609
1700
  BOOST_ASSERT(!this->empty());
1610
1701
  return *this->m_holder.start();
@@ -1618,10 +1709,10 @@ private:
1618
1709
  //! <b>Throws</b>: Nothing.
1619
1710
  //!
1620
1711
  //! <b>Complexity</b>: Constant.
1621
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference back() BOOST_NOEXCEPT_OR_NOTHROW
1712
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference back() BOOST_NOEXCEPT_OR_NOTHROW
1622
1713
  {
1623
1714
  BOOST_ASSERT(!this->empty());
1624
- return this->m_holder.start()[this->m_holder.m_size - 1];
1715
+ return this->m_holder.start()[difference_type(this->m_holder.m_size - 1u)];
1625
1716
  }
1626
1717
 
1627
1718
  //! <b>Requires</b>: !empty()
@@ -1632,7 +1723,7 @@ private:
1632
1723
  //! <b>Throws</b>: Nothing.
1633
1724
  //!
1634
1725
  //! <b>Complexity</b>: Constant.
1635
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW
1726
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW
1636
1727
  {
1637
1728
  BOOST_ASSERT(!this->empty());
1638
1729
  return this->m_holder.start()[this->m_holder.m_size - 1];
@@ -1646,10 +1737,10 @@ private:
1646
1737
  //! <b>Throws</b>: Nothing.
1647
1738
  //!
1648
1739
  //! <b>Complexity</b>: Constant.
1649
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1740
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1650
1741
  {
1651
1742
  BOOST_ASSERT(this->m_holder.m_size > n);
1652
- return this->m_holder.start()[n];
1743
+ return this->m_holder.start()[difference_type(n)];
1653
1744
  }
1654
1745
 
1655
1746
  //! <b>Requires</b>: size() > n.
@@ -1660,7 +1751,7 @@ private:
1660
1751
  //! <b>Throws</b>: Nothing.
1661
1752
  //!
1662
1753
  //! <b>Complexity</b>: Constant.
1663
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1754
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1664
1755
  const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1665
1756
  {
1666
1757
  BOOST_ASSERT(this->m_holder.m_size > n);
@@ -1678,11 +1769,11 @@ private:
1678
1769
  //! <b>Complexity</b>: Constant.
1679
1770
  //!
1680
1771
  //! <b>Note</b>: Non-standard extension
1681
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1772
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1682
1773
  iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1683
1774
  {
1684
1775
  BOOST_ASSERT(this->m_holder.m_size >= n);
1685
- return iterator(this->m_holder.start()+n);
1776
+ return iterator(this->m_holder.start()+difference_type(n));
1686
1777
  }
1687
1778
 
1688
1779
  //! <b>Requires</b>: size() >= n.
@@ -1696,11 +1787,11 @@ private:
1696
1787
  //! <b>Complexity</b>: Constant.
1697
1788
  //!
1698
1789
  //! <b>Note</b>: Non-standard extension
1699
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1790
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1700
1791
  const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1701
1792
  {
1702
1793
  BOOST_ASSERT(this->m_holder.m_size >= n);
1703
- return const_iterator(this->m_holder.start()+n);
1794
+ return const_iterator(this->m_holder.start()+difference_type(n));
1704
1795
  }
1705
1796
 
1706
1797
  //! <b>Requires</b>: begin() <= p <= end().
@@ -1713,7 +1804,7 @@ private:
1713
1804
  //! <b>Complexity</b>: Constant.
1714
1805
  //!
1715
1806
  //! <b>Note</b>: Non-standard extension
1716
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1807
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1717
1808
  size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
1718
1809
  {
1719
1810
  //Range check assert done in priv_index_of
@@ -1730,7 +1821,7 @@ private:
1730
1821
  //! <b>Complexity</b>: Constant.
1731
1822
  //!
1732
1823
  //! <b>Note</b>: Non-standard extension
1733
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
1824
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
1734
1825
  size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
1735
1826
  {
1736
1827
  //Range check assert done in priv_index_of
@@ -1745,10 +1836,10 @@ private:
1745
1836
  //! <b>Throws</b>: range_error if n >= size()
1746
1837
  //!
1747
1838
  //! <b>Complexity</b>: Constant.
1748
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE reference at(size_type n)
1839
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline reference at(size_type n)
1749
1840
  {
1750
1841
  this->priv_throw_if_out_of_range(n);
1751
- return this->m_holder.start()[n];
1842
+ return this->m_holder.start()[difference_type(n)];
1752
1843
  }
1753
1844
 
1754
1845
  //! <b>Requires</b>: size() > n.
@@ -1759,7 +1850,7 @@ private:
1759
1850
  //! <b>Throws</b>: range_error if n >= size()
1760
1851
  //!
1761
1852
  //! <b>Complexity</b>: Constant.
1762
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const_reference at(size_type n) const
1853
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const_reference at(size_type n) const
1763
1854
  {
1764
1855
  this->priv_throw_if_out_of_range(n);
1765
1856
  return this->m_holder.start()[n];
@@ -1777,7 +1868,7 @@ private:
1777
1868
  //! <b>Throws</b>: Nothing.
1778
1869
  //!
1779
1870
  //! <b>Complexity</b>: Constant.
1780
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE T* data() BOOST_NOEXCEPT_OR_NOTHROW
1871
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline T* data() BOOST_NOEXCEPT_OR_NOTHROW
1781
1872
  { return this->priv_raw_begin(); }
1782
1873
 
1783
1874
  //! <b>Returns</b>: A pointer such that [data(),data() + size()) is a valid range.
@@ -1786,7 +1877,7 @@ private:
1786
1877
  //! <b>Throws</b>: Nothing.
1787
1878
  //!
1788
1879
  //! <b>Complexity</b>: Constant.
1789
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE const T * data() const BOOST_NOEXCEPT_OR_NOTHROW
1880
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline const T * data() const BOOST_NOEXCEPT_OR_NOTHROW
1790
1881
  { return this->priv_raw_begin(); }
1791
1882
 
1792
1883
  //////////////////////////////////////////////
@@ -1806,7 +1897,7 @@ private:
1806
1897
  //!
1807
1898
  //! <b>Complexity</b>: Amortized constant time.
1808
1899
  template<class ...Args>
1809
- BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_FWD_REF(Args)...args)
1900
+ inline reference emplace_back(BOOST_FWD_REF(Args)...args)
1810
1901
  {
1811
1902
  T* const p = this->priv_raw_end();
1812
1903
  if (BOOST_LIKELY(this->room_enough())){
@@ -1816,7 +1907,7 @@ private:
1816
1907
  return *p;
1817
1908
  }
1818
1909
  else{
1819
- typedef dtl::insert_emplace_proxy<allocator_type, T*, Args...> proxy_t;
1910
+ typedef dtl::insert_emplace_proxy<allocator_type, Args...> proxy_t;
1820
1911
  return *this->priv_insert_forward_range_no_capacity
1821
1912
  (p, 1, proxy_t(::boost::forward<Args>(args)...), alloc_version());
1822
1913
  }
@@ -1831,7 +1922,7 @@ private:
1831
1922
  //!
1832
1923
  //! <b>Note</b>: Non-standard extension.
1833
1924
  template<class ...Args>
1834
- BOOST_CONTAINER_FORCEINLINE bool stable_emplace_back(BOOST_FWD_REF(Args)...args)
1925
+ inline bool stable_emplace_back(BOOST_FWD_REF(Args)...args)
1835
1926
  {
1836
1927
  const bool is_room_enough = this->room_enough() || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(1u));
1837
1928
  if (BOOST_LIKELY(is_room_enough)){
@@ -1853,11 +1944,11 @@ private:
1853
1944
  //! <b>Complexity</b>: If position is end(), amortized constant time
1854
1945
  //! Linear time otherwise.
1855
1946
  template<class ...Args>
1856
- BOOST_CONTAINER_FORCEINLINE iterator emplace(const_iterator position, BOOST_FWD_REF(Args) ...args)
1947
+ inline iterator emplace(const_iterator position, BOOST_FWD_REF(Args) ...args)
1857
1948
  {
1858
1949
  BOOST_ASSERT(this->priv_in_range_or_end(position));
1859
1950
  //Just call more general insert(pos, size, value) and return iterator
1860
- typedef dtl::insert_emplace_proxy<allocator_type, T*, Args...> proxy_t;
1951
+ typedef dtl::insert_emplace_proxy<allocator_type, Args...> proxy_t;
1861
1952
  return this->priv_insert_forward_range( vector_iterator_get_ptr(position), 1
1862
1953
  , proxy_t(::boost::forward<Args>(args)...));
1863
1954
  }
@@ -1866,7 +1957,7 @@ private:
1866
1957
 
1867
1958
  #define BOOST_CONTAINER_VECTOR_EMPLACE_CODE(N) \
1868
1959
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1869
- BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_MOVE_UREF##N)\
1960
+ inline reference emplace_back(BOOST_MOVE_UREF##N)\
1870
1961
  {\
1871
1962
  T* const p = this->priv_raw_end();\
1872
1963
  if (BOOST_LIKELY(this->room_enough())){\
@@ -1876,14 +1967,14 @@ private:
1876
1967
  return *p;\
1877
1968
  }\
1878
1969
  else{\
1879
- typedef dtl::insert_emplace_proxy_arg##N<allocator_type, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> proxy_t;\
1970
+ typedef dtl::insert_emplace_proxy_arg##N<allocator_type BOOST_MOVE_I##N BOOST_MOVE_TARG##N> proxy_t;\
1880
1971
  return *this->priv_insert_forward_range_no_capacity\
1881
1972
  ( p, 1, proxy_t(BOOST_MOVE_FWD##N), alloc_version());\
1882
1973
  }\
1883
1974
  }\
1884
1975
  \
1885
1976
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1886
- BOOST_CONTAINER_FORCEINLINE bool stable_emplace_back(BOOST_MOVE_UREF##N)\
1977
+ inline bool stable_emplace_back(BOOST_MOVE_UREF##N)\
1887
1978
  {\
1888
1979
  const bool is_room_enough = this->room_enough() || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(1u));\
1889
1980
  if (BOOST_LIKELY(is_room_enough)){\
@@ -1895,10 +1986,10 @@ private:
1895
1986
  }\
1896
1987
  \
1897
1988
  BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
1898
- BOOST_CONTAINER_FORCEINLINE iterator emplace(const_iterator pos BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1989
+ inline iterator emplace(const_iterator pos BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1899
1990
  {\
1900
1991
  BOOST_ASSERT(this->priv_in_range_or_end(pos));\
1901
- typedef dtl::insert_emplace_proxy_arg##N<allocator_type, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> proxy_t;\
1992
+ typedef dtl::insert_emplace_proxy_arg##N<allocator_type BOOST_MOVE_I##N BOOST_MOVE_TARG##N> proxy_t;\
1902
1993
  return this->priv_insert_forward_range(vector_iterator_get_ptr(pos), 1, proxy_t(BOOST_MOVE_FWD##N));\
1903
1994
  }\
1904
1995
  //
@@ -1961,10 +2052,10 @@ private:
1961
2052
  //! <b>Throws</b>: If memory allocation throws or T's copy/move constructor throws.
1962
2053
  //!
1963
2054
  //! <b>Complexity</b>: Linear to n.
1964
- BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator p, size_type n, const T& x)
2055
+ inline iterator insert(const_iterator p, size_type n, const T& x)
1965
2056
  {
1966
2057
  BOOST_ASSERT(this->priv_in_range_or_end(p));
1967
- dtl::insert_n_copies_proxy<allocator_type, T*> proxy(x);
2058
+ dtl::insert_n_copies_proxy<allocator_type> proxy(x);
1968
2059
  return this->priv_insert_forward_range(vector_iterator_get_ptr(p), n, proxy);
1969
2060
  }
1970
2061
 
@@ -1990,18 +2081,18 @@ private:
1990
2081
  )
1991
2082
  {
1992
2083
  BOOST_ASSERT(this->priv_in_range_or_end(pos));
1993
- const size_type n_pos = pos - this->cbegin();
2084
+ const size_type n_pos = size_type(pos - this->cbegin());
1994
2085
  iterator it(vector_iterator_get_ptr(pos));
1995
2086
  for(;first != last; ++first){
1996
2087
  it = this->emplace(it, *first);
1997
2088
  ++it;
1998
2089
  }
1999
- return iterator(this->m_holder.start() + n_pos);
2090
+ return iterator(this->m_holder.start() + difference_type(n_pos));
2000
2091
  }
2001
2092
 
2002
2093
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
2003
2094
  template <class FwdIt>
2004
- BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator pos, FwdIt first, FwdIt last
2095
+ inline iterator insert(const_iterator pos, FwdIt first, FwdIt last
2005
2096
  , typename dtl::disable_if_or
2006
2097
  < void
2007
2098
  , dtl::is_convertible<FwdIt, size_type>
@@ -2009,13 +2100,14 @@ private:
2009
2100
  >::type * = 0
2010
2101
  )
2011
2102
  {
2103
+ typedef typename iter_size<FwdIt>::type it_size_type;
2012
2104
  BOOST_ASSERT(this->priv_in_range_or_end(pos));
2013
- const typename iterator_traits<FwdIt>::size_type sz = boost::container::iterator_distance(first, last);
2014
- if (sz > size_type(-1)){
2105
+ const it_size_type sz = boost::container::iterator_udistance(first, last);
2106
+ if (BOOST_UNLIKELY(sz > size_type(-1))){
2015
2107
  boost::container::throw_length_error("vector::insert, FwdIt's max length reached");
2016
2108
  }
2017
2109
 
2018
- dtl::insert_range_proxy<allocator_type, FwdIt, T*> proxy(first);
2110
+ dtl::insert_range_proxy<allocator_type, FwdIt> proxy(first);
2019
2111
  return this->priv_insert_forward_range(vector_iterator_get_ptr(pos), static_cast<size_type>(sz), proxy);
2020
2112
  }
2021
2113
  #endif
@@ -2037,13 +2129,13 @@ private:
2037
2129
  //! a non-standard extension.
2038
2130
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
2039
2131
  template <class InIt>
2040
- BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator pos, size_type num, InIt first, InIt last)
2132
+ inline iterator insert(const_iterator pos, size_type num, InIt first, InIt last)
2041
2133
  {
2042
2134
  BOOST_ASSERT(this->priv_in_range_or_end(pos));
2043
2135
  BOOST_ASSERT(dtl::is_input_iterator<InIt>::value ||
2044
- num == static_cast<size_type>(boost::container::iterator_distance(first, last)));
2136
+ num == boost::container::iterator_udistance(first, last));
2045
2137
  (void)last;
2046
- dtl::insert_range_proxy<allocator_type, InIt, T*> proxy(first);
2138
+ dtl::insert_range_proxy<allocator_type, InIt> proxy(first);
2047
2139
  return this->priv_insert_forward_range(vector_iterator_get_ptr(pos), num, proxy);
2048
2140
  }
2049
2141
  #endif
@@ -2056,7 +2148,7 @@ private:
2056
2148
  //! <b>Returns</b>: an iterator to the first inserted element or position if first == last.
2057
2149
  //!
2058
2150
  //! <b>Complexity</b>: Linear to the range [il.begin(), il.end()).
2059
- BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator position, std::initializer_list<value_type> il)
2151
+ inline iterator insert(const_iterator position, std::initializer_list<value_type> il)
2060
2152
  {
2061
2153
  //Assertion done in insert()
2062
2154
  return this->insert(position, il.begin(), il.end());
@@ -2068,7 +2160,7 @@ private:
2068
2160
  //! <b>Throws</b>: Nothing.
2069
2161
  //!
2070
2162
  //! <b>Complexity</b>: Constant time.
2071
- BOOST_CONTAINER_FORCEINLINE void pop_back() BOOST_NOEXCEPT_OR_NOTHROW
2163
+ inline void pop_back() BOOST_NOEXCEPT_OR_NOTHROW
2072
2164
  {
2073
2165
  BOOST_ASSERT(!this->empty());
2074
2166
  //Destroy last element
@@ -2130,7 +2222,7 @@ private:
2130
2222
  //! <b>Throws</b>: Nothing.
2131
2223
  //!
2132
2224
  //! <b>Complexity</b>: Constant.
2133
- BOOST_CONTAINER_FORCEINLINE void swap(vector& x)
2225
+ inline void swap(vector& x)
2134
2226
  BOOST_NOEXCEPT_IF( ((allocator_traits_type::propagate_on_container_swap::value
2135
2227
  || allocator_traits_type::is_always_equal::value) &&
2136
2228
  !dtl::is_version<allocator_type, 0>::value))
@@ -2148,7 +2240,7 @@ private:
2148
2240
  //!
2149
2241
  //! <b>Note</b>: Non-standard extension to support static_vector
2150
2242
  template<class OtherA>
2151
- BOOST_CONTAINER_FORCEINLINE void swap(vector<T, OtherA, Options> & x
2243
+ inline void swap(vector<T, OtherA, Options> & x
2152
2244
  , typename dtl::enable_if_and
2153
2245
  < void
2154
2246
  , dtl::is_version<typename real_allocator<T, OtherA>::type, 0>
@@ -2159,24 +2251,24 @@ private:
2159
2251
 
2160
2252
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
2161
2253
 
2162
- //! <b>Effects</b>: Erases all the elements of the vector.
2254
+ //! <b>Effects</b>: Erases all the elements of the vector. Leaves the capacity() of the vector unchanged.
2163
2255
  //!
2164
2256
  //! <b>Throws</b>: Nothing.
2165
2257
  //!
2166
2258
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2167
- BOOST_CONTAINER_FORCEINLINE void clear() BOOST_NOEXCEPT_OR_NOTHROW
2259
+ inline void clear() BOOST_NOEXCEPT_OR_NOTHROW
2168
2260
  { this->priv_destroy_all(); }
2169
2261
 
2170
2262
  //! <b>Effects</b>: Returns true if x and y are equal
2171
2263
  //!
2172
2264
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2173
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator==(const vector& x, const vector& y)
2265
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator==(const vector& x, const vector& y)
2174
2266
  { return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
2175
2267
 
2176
2268
  //! <b>Effects</b>: Returns true if x and y are unequal
2177
2269
  //!
2178
2270
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2179
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const vector& x, const vector& y)
2271
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator!=(const vector& x, const vector& y)
2180
2272
  { return !(x == y); }
2181
2273
 
2182
2274
  //! <b>Effects</b>: Returns true if x is less than y
@@ -2188,25 +2280,25 @@ private:
2188
2280
  //! <b>Effects</b>: Returns true if x is greater than y
2189
2281
  //!
2190
2282
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2191
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator>(const vector& x, const vector& y)
2283
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator>(const vector& x, const vector& y)
2192
2284
  { return y < x; }
2193
2285
 
2194
2286
  //! <b>Effects</b>: Returns true if x is equal or less than y
2195
2287
  //!
2196
2288
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2197
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const vector& x, const vector& y)
2289
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator<=(const vector& x, const vector& y)
2198
2290
  { return !(y < x); }
2199
2291
 
2200
2292
  //! <b>Effects</b>: Returns true if x is equal or greater than y
2201
2293
  //!
2202
2294
  //! <b>Complexity</b>: Linear to the number of elements in the container.
2203
- BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const vector& x, const vector& y)
2295
+ BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline friend bool operator>=(const vector& x, const vector& y)
2204
2296
  { return !(x < y); }
2205
2297
 
2206
2298
  //! <b>Effects</b>: x.swap(y)
2207
2299
  //!
2208
2300
  //! <b>Complexity</b>: Constant.
2209
- BOOST_CONTAINER_FORCEINLINE friend void swap(vector& x, vector& y)
2301
+ inline friend void swap(vector& x, vector& y)
2210
2302
  BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT(x.swap(y)))
2211
2303
  { x.swap(y); }
2212
2304
 
@@ -2223,48 +2315,65 @@ private:
2223
2315
  bool stable_reserve(size_type new_cap)
2224
2316
  {
2225
2317
  const size_type cp = this->capacity();
2226
- return cp >= new_cap || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(new_cap - cp));
2318
+ return cp >= new_cap || (alloc_version::value == 2 && this->m_holder.try_expand_fwd(size_type(new_cap - cp)));
2227
2319
  }
2228
2320
 
2321
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
2229
2322
  //Absolutely experimental. This function might change, disappear or simply crash!
2230
2323
  template<class BiDirPosConstIt, class BiDirValueIt>
2231
- BOOST_CONTAINER_FORCEINLINE void insert_ordered_at(const size_type element_count, BiDirPosConstIt last_position_it, BiDirValueIt last_value_it)
2324
+ inline void insert_ordered_at(const size_type element_count, BiDirPosConstIt last_position_it, BiDirValueIt last_value_it)
2232
2325
  {
2233
2326
  typedef vector_insert_ordered_cursor<BiDirPosConstIt, BiDirValueIt> inserter_t;
2234
2327
  return this->priv_insert_ordered_at(element_count, inserter_t(last_position_it, last_value_it));
2235
2328
  }
2236
2329
 
2237
2330
  template<class InputIt>
2238
- BOOST_CONTAINER_FORCEINLINE void merge(InputIt first, InputIt last)
2331
+ inline void merge(InputIt first, InputIt last)
2239
2332
  { this->merge(first, last, value_less_t()); }
2240
2333
 
2241
2334
  template<class InputIt, class Compare>
2242
- BOOST_CONTAINER_FORCEINLINE void merge(InputIt first, InputIt last, Compare comp)
2335
+ inline
2336
+ typename dtl::enable_if_c
2337
+ < !dtl::is_input_iterator<InputIt>::value &&
2338
+ dtl::is_same<value_type, typename iterator_traits<InputIt>::value_type>::value
2339
+ , void>::type
2340
+ merge(InputIt first, InputIt last, Compare comp)
2243
2341
  {
2244
2342
  size_type const s = this->size();
2245
2343
  size_type const c = this->capacity();
2246
2344
  size_type n = 0;
2247
2345
  size_type const free_cap = c - s;
2248
2346
  //If not input iterator and new elements don't fit in the remaining capacity, merge in new buffer
2249
- if(!dtl::is_input_iterator<InputIt>::value &&
2250
- free_cap < (n = static_cast<size_type>(boost::container::iterator_distance(first, last)))){
2347
+ if(free_cap < (n = boost::container::iterator_udistance(first, last))){
2251
2348
  this->priv_merge_in_new_buffer(first, n, comp, alloc_version());
2252
2349
  }
2253
2350
  else{
2254
- this->insert(this->cend(), first, last);
2255
- T *const raw_beg = this->priv_raw_begin();
2256
- T *const raw_end = this->priv_raw_end();
2257
- T *const raw_pos = raw_beg + s;
2258
- boost::movelib::adaptive_merge(raw_beg, raw_pos, raw_end, comp, raw_end, free_cap - n);
2351
+ this->priv_merge_generic(first, last, comp);
2259
2352
  }
2260
2353
  }
2261
2354
 
2355
+ template<class InputIt, class Compare>
2356
+ inline
2357
+ typename dtl::enable_if_c
2358
+ < dtl::is_input_iterator<InputIt>::value ||
2359
+ !dtl::is_same<value_type, typename iterator_traits<InputIt>::value_type>::value
2360
+ , void>::type
2361
+ merge(InputIt first, InputIt last, Compare comp)
2362
+ {
2363
+ this->priv_merge_generic(first, last, comp);
2364
+ }
2365
+
2262
2366
  template<class InputIt>
2263
- BOOST_CONTAINER_FORCEINLINE void merge_unique(InputIt first, InputIt last)
2367
+ inline void merge_unique(InputIt first, InputIt last)
2264
2368
  { this->merge_unique(first, last, value_less_t()); }
2265
2369
 
2266
2370
  template<class InputIt, class Compare>
2267
- BOOST_CONTAINER_FORCEINLINE void merge_unique(InputIt first, InputIt last, Compare comp)
2371
+ inline
2372
+ typename dtl::enable_if_c
2373
+ < !dtl::is_input_iterator<InputIt>::value &&
2374
+ dtl::is_same<value_type, typename iterator_traits<InputIt>::value_type>::value
2375
+ , void>::type
2376
+ merge_unique(InputIt first, InputIt last, Compare comp)
2268
2377
  {
2269
2378
  size_type const old_size = this->size();
2270
2379
  this->priv_set_difference_back(first, last, comp);
@@ -2274,7 +2383,42 @@ private:
2274
2383
  boost::movelib::adaptive_merge(raw_beg, raw_pos, raw_end, comp, raw_end, this->capacity() - this->size());
2275
2384
  }
2276
2385
 
2386
+ template<class InputIt, class Compare>
2387
+ inline
2388
+ typename dtl::enable_if_c
2389
+ < dtl::is_input_iterator<InputIt>::value ||
2390
+ !dtl::is_same<value_type, typename iterator_traits<InputIt>::value_type>::value
2391
+ , void>::type
2392
+ merge_unique(InputIt first, InputIt last, Compare comp)
2393
+ {
2394
+ iterator pos = this->insert(this->end(), first, last);
2395
+ const iterator e = boost::movelib::inplace_set_unique_difference(pos, this->end(), this->begin(), pos, comp);
2396
+ this->erase(e, this->end());
2397
+ boost::movelib::adaptive_merge( this->begin(), pos, e, comp
2398
+ , this->priv_raw_end(), this->capacity() - this->size());
2399
+ }
2400
+
2401
+ //Function for optimizations, not for users
2402
+ T *unused_storage(size_type &sz)
2403
+ {
2404
+ sz = static_cast<size_type>(this->capacity() - this->size());
2405
+ return this->priv_raw_end();
2406
+ }
2407
+
2408
+ #endif
2409
+
2277
2410
  private:
2411
+ template<class InputIt, class Compare>
2412
+ inline void priv_merge_generic(InputIt first, InputIt last, Compare comp)
2413
+ {
2414
+ size_type const old_s = this->size();
2415
+ this->insert(this->cend(), first, last);
2416
+ T* const raw_beg = this->priv_raw_begin();
2417
+ T* const raw_end = this->priv_raw_end();
2418
+ T* const raw_pos = raw_beg + old_s;
2419
+ boost::movelib::adaptive_merge(raw_beg, raw_pos, raw_end, comp, raw_end, this->capacity() - this->size());
2420
+ }
2421
+
2278
2422
  template<class PositionValue>
2279
2423
  void priv_insert_ordered_at(const size_type element_count, PositionValue position_value)
2280
2424
  {
@@ -2367,7 +2511,7 @@ private:
2367
2511
  }
2368
2512
 
2369
2513
  template<class FwdIt, class Compare>
2370
- BOOST_CONTAINER_FORCEINLINE void priv_merge_in_new_buffer(FwdIt, size_type, Compare, version_0)
2514
+ inline void priv_merge_in_new_buffer(FwdIt, size_type, Compare, version_0)
2371
2515
  {
2372
2516
  alloc_holder_t::on_capacity_overflow();
2373
2517
  }
@@ -2429,16 +2573,16 @@ private:
2429
2573
  new_values_destroyer.release();
2430
2574
  }
2431
2575
 
2432
- BOOST_CONTAINER_FORCEINLINE bool room_enough() const
2576
+ inline bool room_enough() const
2433
2577
  { return this->m_holder.m_size != this->m_holder.capacity(); }
2434
2578
 
2435
- BOOST_CONTAINER_FORCEINLINE pointer back_ptr() const
2436
- { return this->m_holder.start() + this->m_holder.m_size; }
2579
+ inline pointer back_ptr() const
2580
+ { return this->m_holder.start() + difference_type(this->m_holder.m_size); }
2437
2581
 
2438
- BOOST_CONTAINER_FORCEINLINE size_type priv_index_of(pointer p) const
2582
+ inline size_type priv_index_of(pointer p) const
2439
2583
  {
2440
2584
  BOOST_ASSERT(this->m_holder.start() <= p);
2441
- BOOST_ASSERT(p <= (this->m_holder.start()+this->size()));
2585
+ BOOST_ASSERT(p <= (this->m_holder.start()+difference_type(this->size())));
2442
2586
  return static_cast<size_type>(p - this->m_holder.start());
2443
2587
  }
2444
2588
 
@@ -2462,6 +2606,38 @@ private:
2462
2606
  x.clear();
2463
2607
  }
2464
2608
 
2609
+ template<class OtherA>
2610
+ 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*/)
2611
+ {
2612
+ this->clear();
2613
+ if (BOOST_LIKELY(!!this->m_holder.m_start))
2614
+ this->m_holder.deallocate(this->m_holder.m_start, this->m_holder.m_capacity);
2615
+ this->m_holder.steal_resources(x.m_holder);
2616
+ }
2617
+
2618
+ template<class OtherA>
2619
+ 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*/)
2620
+ {
2621
+ const bool propagate_alloc = allocator_traits_type::propagate_on_container_move_assignment::value;
2622
+ allocator_type& this_alloc = this->m_holder.alloc();
2623
+ allocator_type& x_alloc = x.m_holder.alloc();
2624
+
2625
+ //In this allocator move constructor the allocator might will be propagated, but to support small_vector-like
2626
+ //types, we need to check the currently owned buffers to know if they are propagable.
2627
+ const bool is_buffer_propagable_from_x = is_propagable_from<propagate_alloc>(x_alloc, x.m_holder.start(), this_alloc);
2628
+
2629
+ if (is_buffer_propagable_from_x) {
2630
+ this->priv_move_assign_steal_or_assign(boost::move(x), dtl::true_type());
2631
+ }
2632
+ //Else do a one by one move. Also, clear the source as users find confusing
2633
+ //elements are still alive in the source container.
2634
+ else {
2635
+ this->assign( boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(x.begin()))
2636
+ , boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(x.end())) );
2637
+ x.clear();
2638
+ }
2639
+ }
2640
+
2465
2641
  template<class OtherA>
2466
2642
  void priv_move_assign(BOOST_RV_REF_BEG vector<T, OtherA, Options> BOOST_RV_REF_END x
2467
2643
  , typename dtl::disable_if_or
@@ -2473,30 +2649,16 @@ private:
2473
2649
  //for move assignment, no aliasing (&x != this) is assumed.
2474
2650
  //x.size() == 0 is allowed for buggy std libraries.
2475
2651
  BOOST_ASSERT(this != &x || x.size() == 0);
2476
- allocator_type &this_alloc = this->m_holder.alloc();
2477
- allocator_type &x_alloc = x.m_holder.alloc();
2652
+ const bool alloc_is_always_equal = allocator_traits_type::is_always_equal::value;
2478
2653
  const bool propagate_alloc = allocator_traits_type::propagate_on_container_move_assignment::value;
2654
+ const bool partially_propagable_alloc = allocator_traits_type::is_partially_propagable::value;
2655
+ const bool data_can_be_always_be_stolen = alloc_is_always_equal || (propagate_alloc && !partially_propagable_alloc);
2479
2656
 
2480
- //In this allocator move constructor the allocator maybe will be propagated -----------------------v
2481
- const bool is_propagable_from_x = is_propagable_from(x_alloc, x.m_holder.start(), this_alloc, propagate_alloc);
2657
+ this->priv_move_assign_steal_or_assign(boost::move(x), dtl::bool_<data_can_be_always_be_stolen>());
2482
2658
 
2483
- //Resources can be transferred if both allocators are
2484
- //going to be equal after this function (either propagated or already equal)
2485
- if(is_propagable_from_x){
2486
- this->clear();
2487
- if(BOOST_LIKELY(!!this->m_holder.m_start))
2488
- this->m_holder.deallocate(this->m_holder.m_start, this->m_holder.m_capacity);
2489
- this->m_holder.steal_resources(x.m_holder);
2490
- }
2491
- //Else do a one by one move. Also, clear the source as users find confusing
2492
- //elements are still alive in the source container.
2493
- else{
2494
- this->assign( boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(x.begin()))
2495
- , boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(x.end() ))
2496
- );
2497
- x.clear();
2498
- }
2499
2659
  //Move allocator if needed
2660
+ allocator_type& this_alloc = this->m_holder.alloc();
2661
+ allocator_type& x_alloc = x.m_holder.alloc();
2500
2662
  dtl::move_alloc(this_alloc, x_alloc, dtl::bool_<propagate_alloc>());
2501
2663
  }
2502
2664
 
@@ -2538,53 +2700,131 @@ private:
2538
2700
  }
2539
2701
 
2540
2702
  template<class Vector> //Template it to avoid it in explicit instantiations
2541
- BOOST_CONTAINER_FORCEINLINE void priv_swap(Vector &x, dtl::true_type) //version_0
2703
+ inline void priv_swap(Vector &x, dtl::true_type) //version_0
2542
2704
  { this->m_holder.deep_swap(x.m_holder); }
2543
2705
 
2544
2706
  template<class Vector> //Template it to avoid it in explicit instantiations
2545
2707
  void priv_swap(Vector &x, dtl::false_type) //version_N
2546
2708
  {
2547
- const bool propagate_alloc = allocator_traits_type::propagate_on_container_swap::value;
2548
- if(are_swap_propagable( this->get_stored_allocator(), this->m_holder.start()
2549
- , x.get_stored_allocator(), x.m_holder.start(), propagate_alloc)){
2550
- //Just swap internals
2551
- this->m_holder.swap_resources(x.m_holder);
2709
+ BOOST_ASSERT(allocator_traits_type::propagate_on_container_swap::value ||
2710
+ allocator_traits_type::is_always_equal::value ||
2711
+ this->get_stored_allocator() == x.get_stored_allocator());
2712
+
2713
+ if (BOOST_UNLIKELY(&x == this)) {
2714
+ return;
2715
+ }
2716
+
2717
+ //Just swap internals
2718
+ this->m_holder.swap_resources(x.m_holder);
2719
+ //And now swap the allocator
2720
+ dtl::bool_<allocator_traits_type::propagate_on_container_swap::value> flag;
2721
+ dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), flag);
2722
+ }
2723
+
2724
+ protected:
2725
+ template<class Vector> //Template it to avoid it in explicit instantiations
2726
+ void prot_swap_small(Vector &x, std::size_t internal_capacity) //version_N
2727
+ {
2728
+ if (BOOST_UNLIKELY(&x == this)){
2729
+ return;
2552
2730
  }
2553
- else{
2554
- if (BOOST_UNLIKELY(&x == this))
2555
- return;
2556
2731
 
2557
- //Else swap element by element...
2732
+ const bool propagate_alloc = allocator_traits_type::propagate_on_container_swap::value;
2733
+ if(are_swap_propagable<propagate_alloc>
2734
+ ( this->get_stored_allocator(), this->m_holder.start(), x.get_stored_allocator(), x.m_holder.start())){
2735
+ this->priv_swap(x, dtl::false_());
2736
+ return;
2737
+ }
2738
+
2739
+ allocator_type &th_al = this->get_stored_allocator();
2740
+ allocator_type &ot_al = x.get_stored_allocator();
2741
+
2742
+ const bool is_this_data_propagable = is_propagable_from<propagate_alloc>(th_al, this->data(), ot_al);
2743
+ const bool is_that_data_propagable = is_propagable_from<propagate_alloc>(ot_al, x.data(), th_al);
2744
+
2745
+ if(internal_capacity && (is_this_data_propagable || is_that_data_propagable)) {
2746
+ //steal memory from src to dst, but move elements from dst to src
2747
+ vector& extmem = is_this_data_propagable ? *this : x;
2748
+ vector& intmem = is_this_data_propagable ? x : *this;
2749
+
2750
+ //Reset extmem to the internal storage and backup data
2751
+ pointer const orig_extdata = extmem.data();
2752
+ const size_type orig_extmem_size = extmem.size();
2753
+ const size_type orig_extmem_cap = extmem.capacity();
2754
+
2755
+ //New safe state for extmem -> empty, internal storage
2756
+ extmem.m_holder.m_start = extmem.get_stored_allocator().internal_storage();
2757
+ extmem.m_holder.set_stored_size(0u);
2758
+ extmem.m_holder.set_stored_capacity(internal_capacity);
2759
+
2760
+ {
2761
+ //Deallocate on exception
2762
+ typename value_traits::ArrayDeallocator new_buffer_deallocator(orig_extdata, extmem.get_stored_allocator(), orig_extmem_cap);
2763
+ typename value_traits::ArrayDestructor new_values_destroyer(orig_extdata, extmem.get_stored_allocator(), orig_extmem_size);
2764
+
2765
+ //Move internal memory data to the internal memory data of the target, this can throw
2766
+ BOOST_ASSERT(extmem.capacity() >= intmem.size());
2767
+ ::boost::container::uninitialized_move_alloc_n
2768
+ (intmem.get_stored_allocator(), intmem.priv_raw_begin(), intmem.size(), extmem.priv_raw_begin());
2769
+
2770
+ //Exception not thrown, commit new state
2771
+ extmem.m_holder.set_stored_size(intmem.size());
2772
+ //Throwing part passed, disable rollback
2773
+ new_buffer_deallocator.release();
2774
+ new_values_destroyer.release();
2775
+ }
2776
+
2777
+ //Destroy moved elements from intmem
2778
+ boost::container::destroy_alloc_n
2779
+ ( intmem.get_stored_allocator(), intmem.priv_raw_begin()
2780
+ , intmem.size());
2781
+
2782
+ //Adopt dynamic buffer
2783
+ intmem.m_holder.m_start = orig_extdata;
2784
+ intmem.m_holder.set_stored_size(orig_extmem_size);
2785
+ intmem.m_holder.set_stored_capacity(orig_extmem_cap);
2786
+
2787
+ //And now swap the allocator
2788
+ dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), dtl::bool_<propagate_alloc>());
2789
+ }
2790
+ else { //swap element by element and insert rest
2558
2791
  bool const t_smaller = this->size() < x.size();
2559
2792
  vector &sml = t_smaller ? *this : x;
2560
2793
  vector &big = t_smaller ? x : *this;
2561
2794
 
2795
+ //swap element by element until common size
2562
2796
  size_type const common_elements = sml.size();
2563
2797
  for(size_type i = 0; i != common_elements; ++i){
2564
2798
  boost::adl_move_swap(sml[i], big[i]);
2565
2799
  }
2566
- //... and move-insert the remaining range
2567
- sml.insert( sml.cend()
2568
- , boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(big.nth(common_elements)))
2569
- , boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(big.end()))
2570
- );
2571
- //Destroy remaining elements
2572
- big.erase(big.nth(common_elements), big.cend());
2800
+
2801
+ //And now swap the allocator to be able to construct new elements in sml with the proper allocator
2802
+ dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), dtl::bool_<propagate_alloc>());
2803
+
2804
+ //move-insert the remaining range
2805
+ T *const raw_big_nth = boost::movelib::iterator_to_raw_pointer(big.nth(common_elements));
2806
+ sml.insert(sml.cend()
2807
+ , boost::make_move_iterator(raw_big_nth)
2808
+ , boost::make_move_iterator(boost::movelib::iterator_to_raw_pointer(big.end())));
2809
+
2810
+ //Destroy remaining, moved, elements with their original allocator
2811
+ boost::container::destroy_alloc_n
2812
+ ( sml.get_stored_allocator(), raw_big_nth
2813
+ , std::size_t(big.m_holder.m_size - common_elements));
2814
+ big.m_holder.set_stored_size(common_elements);
2573
2815
  }
2574
- //And now swap the allocator
2575
- dtl::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), dtl::bool_<propagate_alloc>());
2576
2816
  }
2577
-
2578
- BOOST_CONTAINER_FORCEINLINE void priv_move_to_new_buffer(size_type, version_0)
2817
+ private:
2818
+ inline void priv_move_to_new_buffer(size_type, version_0)
2579
2819
  { alloc_holder_t::on_capacity_overflow(); }
2580
2820
 
2581
- BOOST_CONTAINER_FORCEINLINE dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*>, T*> priv_dummy_empty_proxy()
2821
+ inline dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*> > priv_dummy_empty_proxy()
2582
2822
  {
2583
- return dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*>, T*>
2823
+ return dtl::insert_range_proxy<allocator_type, boost::move_iterator<T*> >
2584
2824
  (::boost::make_move_iterator((T *)0));
2585
2825
  }
2586
2826
 
2587
- BOOST_CONTAINER_FORCEINLINE void priv_move_to_new_buffer(size_type new_cap, version_1)
2827
+ inline void priv_move_to_new_buffer(size_type new_cap, version_1)
2588
2828
  {
2589
2829
  //There is not enough memory, allocate a new buffer
2590
2830
  //Pass the hint so that allocators can take advantage of this.
@@ -2622,7 +2862,7 @@ private:
2622
2862
  ++this->num_expand_bwd;
2623
2863
  #endif
2624
2864
  this->priv_insert_forward_range_expand_backwards
2625
- ( new_mem , real_cap, ins_pos, 0, this->priv_dummy_empty_proxy());
2865
+ ( new_mem, real_cap, ins_pos, 0, this->priv_dummy_empty_proxy());
2626
2866
  }
2627
2867
  else{ //New buffer
2628
2868
  #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
@@ -2657,34 +2897,69 @@ private:
2657
2897
  }
2658
2898
 
2659
2899
  template<class U>
2660
- BOOST_CONTAINER_FORCEINLINE iterator priv_insert(const const_iterator &p, BOOST_FWD_REF(U) u)
2900
+ inline iterator priv_insert(const const_iterator &p, BOOST_FWD_REF(U) u)
2661
2901
  {
2662
2902
  return this->emplace(p, ::boost::forward<U>(u));
2663
2903
  }
2664
2904
 
2665
2905
  template <class U>
2666
- BOOST_CONTAINER_FORCEINLINE void priv_push_back(BOOST_FWD_REF(U) u)
2906
+ inline void priv_push_back(BOOST_FWD_REF(U) u)
2667
2907
  {
2668
2908
  this->emplace_back(::boost::forward<U>(u));
2669
2909
  }
2670
2910
 
2671
2911
  //Overload to support compiler errors that instantiate too much
2672
- BOOST_CONTAINER_FORCEINLINE void priv_push_back(::boost::move_detail::nat)
2912
+ inline void priv_push_back(::boost::move_detail::nat)
2673
2913
  {}
2674
2914
 
2675
- BOOST_CONTAINER_FORCEINLINE iterator priv_insert(const_iterator, ::boost::move_detail::nat)
2915
+ inline iterator priv_insert(const_iterator, ::boost::move_detail::nat)
2676
2916
  { return iterator(); }
2677
2917
 
2678
- BOOST_CONTAINER_FORCEINLINE dtl::insert_n_copies_proxy<allocator_type, T*> priv_resize_proxy(const T &x)
2679
- { return dtl::insert_n_copies_proxy<allocator_type, T*>(x); }
2918
+ inline dtl::insert_n_copies_proxy<allocator_type> priv_resize_proxy(const T &x)
2919
+ { return dtl::insert_n_copies_proxy<allocator_type>(x); }
2680
2920
 
2681
- BOOST_CONTAINER_FORCEINLINE dtl::insert_default_initialized_n_proxy<allocator_type, T*> priv_resize_proxy(default_init_t)
2682
- { return dtl::insert_default_initialized_n_proxy<allocator_type, T*>(); }
2921
+ inline dtl::insert_default_initialized_n_proxy<allocator_type> priv_resize_proxy(default_init_t)
2922
+ { return dtl::insert_default_initialized_n_proxy<allocator_type>(); }
2683
2923
 
2684
- BOOST_CONTAINER_FORCEINLINE dtl::insert_value_initialized_n_proxy<allocator_type, T*> priv_resize_proxy(value_init_t)
2685
- { return dtl::insert_value_initialized_n_proxy<allocator_type, T*>(); }
2924
+ inline dtl::insert_value_initialized_n_proxy<allocator_type> priv_resize_proxy(value_init_t)
2925
+ { return dtl::insert_value_initialized_n_proxy<allocator_type>(); }
2686
2926
 
2687
- BOOST_CONTAINER_FORCEINLINE void priv_shrink_to_fit(version_0) BOOST_NOEXCEPT_OR_NOTHROW
2927
+ protected:
2928
+ void prot_shrink_to_fit_small(pointer const small_buffer, const size_type small_capacity)
2929
+ {
2930
+ const size_type cp = this->m_holder.capacity();
2931
+ if (cp && this->m_holder.m_start != small_buffer) { //Do something only if a dynamic buffer is used
2932
+ const size_type sz = this->size();
2933
+ if (!sz) {
2934
+ if (BOOST_LIKELY(!!this->m_holder.m_start))
2935
+ this->m_holder.deallocate(this->m_holder.m_start, cp);
2936
+ this->m_holder.m_start = small_buffer;
2937
+ this->m_holder.set_stored_capacity(small_capacity);
2938
+ }
2939
+ else if(sz <= small_capacity) {
2940
+ T *const oldbuf = boost::movelib::to_raw_pointer(this->m_holder.m_start);
2941
+ ::boost::container::uninitialized_move_alloc_n
2942
+ ( this->get_stored_allocator()
2943
+ , oldbuf
2944
+ , sz
2945
+ , boost::movelib::to_raw_pointer(small_buffer)
2946
+ );
2947
+ boost::container::destroy_alloc_n(this->get_stored_allocator(), oldbuf, sz);
2948
+
2949
+ if (BOOST_LIKELY(!!this->m_holder.m_start))
2950
+ this->m_holder.deallocate(this->m_holder.m_start, cp);
2951
+
2952
+ this->m_holder.m_start = small_buffer;
2953
+ this->m_holder.set_stored_capacity(small_capacity);
2954
+ }
2955
+ else if (sz < cp) {
2956
+ this->priv_move_to_new_buffer(sz, alloc_version());
2957
+ }
2958
+ }
2959
+ }
2960
+
2961
+ private:
2962
+ inline void priv_shrink_to_fit(version_0) BOOST_NOEXCEPT_OR_NOTHROW
2688
2963
  {}
2689
2964
 
2690
2965
  void priv_shrink_to_fit(version_1)
@@ -2729,12 +3004,19 @@ private:
2729
3004
  }
2730
3005
  }
2731
3006
 
3007
+ #ifdef _MSC_VER
3008
+ #pragma warning (push)
3009
+ #pragma warning(disable: 4702) //Disable unreachable code warning
3010
+ #endif
2732
3011
  template <class InsertionProxy>
2733
- BOOST_CONTAINER_FORCEINLINE iterator priv_insert_forward_range_no_capacity
3012
+ inline iterator priv_insert_forward_range_no_capacity
2734
3013
  (T * const, const size_type, const InsertionProxy , version_0)
2735
3014
  {
2736
3015
  return alloc_holder_t::on_capacity_overflow(), iterator();
2737
3016
  }
3017
+ #ifdef _MSC_VER
3018
+ #pragma warning (pop)
3019
+ #endif
2738
3020
 
2739
3021
  template <class InsertionProxy>
2740
3022
  BOOST_CONTAINER_NOINLINE iterator priv_insert_forward_range_no_capacity
@@ -2750,7 +3032,7 @@ private:
2750
3032
  ++this->num_alloc;
2751
3033
  #endif
2752
3034
  this->priv_insert_forward_range_new_allocation(new_buf, new_cap, raw_pos, n, insert_range_proxy);
2753
- return iterator(this->m_holder.start() + n_pos);
3035
+ return iterator(this->m_holder.start() + difference_type(n_pos));
2754
3036
  }
2755
3037
 
2756
3038
  template <class InsertionProxy>
@@ -2758,14 +3040,14 @@ private:
2758
3040
  (T *const raw_pos, const size_type n, const InsertionProxy insert_range_proxy, version_2)
2759
3041
  {
2760
3042
  //Check if we have enough memory or try to expand current memory
2761
- const size_type n_pos = raw_pos - this->priv_raw_begin();
3043
+ const size_type n_pos = size_type(raw_pos - this->priv_raw_begin());
2762
3044
 
2763
3045
  //There is not enough memory, allocate a new
2764
3046
  //buffer or expand the old one.
2765
3047
  size_type real_cap = this->m_holder.template next_capacity<growth_factor_type>(n);
2766
3048
  pointer reuse(this->m_holder.start());
2767
3049
  pointer const ret (this->m_holder.allocation_command
2768
- (allocate_new | expand_fwd | expand_bwd, this->m_holder.m_size + n, real_cap, reuse));
3050
+ (allocate_new | expand_fwd | expand_bwd, size_type(this->m_holder.m_size + n), real_cap, reuse));
2769
3051
 
2770
3052
  //Buffer reallocated
2771
3053
  if(reuse){
@@ -2797,11 +3079,11 @@ private:
2797
3079
  ( boost::movelib::to_raw_pointer(ret), real_cap, raw_pos, n, insert_range_proxy);
2798
3080
  }
2799
3081
 
2800
- return iterator(this->m_holder.start() + n_pos);
3082
+ return iterator(this->m_holder.start() + (difference_type)(n_pos));
2801
3083
  }
2802
3084
 
2803
3085
  template <class InsertionProxy>
2804
- BOOST_CONTAINER_FORCEINLINE iterator priv_insert_forward_range
3086
+ inline iterator priv_insert_forward_range
2805
3087
  (const pointer &pos, const size_type n, const InsertionProxy insert_range_proxy)
2806
3088
  {
2807
3089
  BOOST_ASSERT(this->m_holder.capacity() >= this->m_holder.m_size);
@@ -2843,10 +3125,10 @@ private:
2843
3125
  const size_type sz = this->m_holder.m_size;
2844
3126
  if (new_size < sz){
2845
3127
  //Destroy last elements
2846
- this->priv_destroy_last_n(sz - new_size);
3128
+ this->priv_destroy_last_n(size_type(sz - new_size));
2847
3129
  }
2848
3130
  else {
2849
- this->priv_insert_forward_range(this->back_ptr(), new_size - sz, this->priv_resize_proxy(u));
3131
+ this->priv_insert_forward_range(this->back_ptr(), size_type(new_size - sz), this->priv_resize_proxy(u));
2850
3132
  }
2851
3133
  }
2852
3134
 
@@ -2922,7 +3204,9 @@ private:
2922
3204
  //All uninitialized_moved
2923
3205
  ::boost::container::uninitialized_move_alloc
2924
3206
  (this->m_holder.alloc(), first_ptr, last_ptr, first_ptr + shift_count);
2925
- hole_size = first_pos + shift_count - limit_pos;
3207
+ //Cast in case size_type is narrower than int, promotions are applied
3208
+ //and Wconversion is in place
3209
+ hole_size = static_cast<size_type>(first_pos + shift_count - limit_pos);
2926
3210
  }
2927
3211
  //Case C:
2928
3212
  else{
@@ -2937,14 +3221,14 @@ private:
2937
3221
  }
2938
3222
 
2939
3223
  private:
2940
- BOOST_CONTAINER_FORCEINLINE T *priv_raw_begin() const
3224
+ inline T *priv_raw_begin() const
2941
3225
  { return boost::movelib::to_raw_pointer(m_holder.start()); }
2942
3226
 
2943
- BOOST_CONTAINER_FORCEINLINE T* priv_raw_end() const
3227
+ inline T* priv_raw_end() const
2944
3228
  { return this->priv_raw_begin() + this->m_holder.m_size; }
2945
3229
 
2946
3230
  template <class InsertionProxy> //inline single-element version as it is significantly smaller
2947
- BOOST_CONTAINER_FORCEINLINE void priv_insert_forward_range_expand_forward
3231
+ inline void priv_insert_forward_range_expand_forward
2948
3232
  (T* const raw_pos, const size_type, InsertionProxy insert_range_proxy, dtl::true_type)
2949
3233
  {
2950
3234
  BOOST_ASSERT(this->room_enough());
@@ -2971,7 +3255,8 @@ private:
2971
3255
  }
2972
3256
 
2973
3257
  template <class InsertionProxy>
2974
- BOOST_CONTAINER_FORCEINLINE void priv_insert_forward_range_expand_forward(T* const raw_pos, const size_type n, InsertionProxy insert_range_proxy, dtl::false_type)
3258
+ inline void priv_insert_forward_range_expand_forward
3259
+ (T* const raw_pos, const size_type n, InsertionProxy insert_range_proxy, dtl::false_type)
2975
3260
  {
2976
3261
  //There is enough memory
2977
3262
  boost::container::expand_forward_and_insert_alloc
@@ -3009,321 +3294,19 @@ private:
3009
3294
  (T* const new_start, const size_type new_capacity,
3010
3295
  T* const pos, const size_type n, InsertionProxy insert_range_proxy)
3011
3296
  {
3012
- //n can be zero to just expand capacity
3013
- //Backup old data
3014
- T* const old_start = this->priv_raw_begin();
3297
+ T* const old_start = this->priv_raw_begin();
3015
3298
  const size_type old_size = this->m_holder.m_size;
3016
- T* const old_finish = old_start + old_size;
3017
- allocator_type &a = this->m_holder.alloc();
3299
+ allocator_type& a = this->m_holder.alloc();
3018
3300
 
3019
3301
  //Update the vector buffer information to a safe state
3020
3302
  this->m_holder.start(new_start);
3021
3303
  this->m_holder.capacity(new_capacity);
3022
3304
  this->m_holder.m_size = 0;
3023
3305
 
3024
- //We can have 8 possibilities:
3025
- const size_type elemsbefore = static_cast<size_type>(pos - old_start);
3026
- const size_type s_before = static_cast<size_type>(old_start - new_start);
3027
- const size_type before_plus_new = elemsbefore + n;
3028
-
3029
- typedef typename value_traits::ArrayDestructor array_destructor_t;
3030
-
3031
- //If anything goes wrong, this object will destroy
3032
- //all the old objects to fulfill previous vector state
3033
- array_destructor_t old_values_destroyer(old_start, a, old_size);
3034
- //Check if s_before is big enough to hold the beginning of old data + new data
3035
- if(s_before >= before_plus_new){
3036
- //Copy first old values before pos, after that the new objects
3037
- T *const new_elem_pos =
3038
- ::boost::container::uninitialized_move_alloc(a, old_start, pos, new_start);
3039
- this->m_holder.set_stored_size(elemsbefore);
3040
- insert_range_proxy.uninitialized_copy_n_and_update(a, new_elem_pos, n);
3041
- this->m_holder.set_stored_size(before_plus_new);
3042
- const size_type new_size = old_size + n;
3043
- //Check if s_before is so big that even copying the old data + new data
3044
- //there is a gap between the new data and the old data
3045
- if(s_before >= new_size){
3046
- //Old situation:
3047
- // _________________________________________________________
3048
- //| raw_mem | old_begin | old_end |
3049
- //| __________________________________|___________|_________|
3050
- //
3051
- //New situation:
3052
- // _________________________________________________________
3053
- //| old_begin | new | old_end | raw_mem |
3054
- //|___________|__________|_________|________________________|
3055
- //
3056
- //Now initialize the rest of memory with the last old values
3057
- if(before_plus_new != new_size){ //Special case to avoid operations in back insertion
3058
- ::boost::container::uninitialized_move_alloc(a, pos, old_finish, new_start + before_plus_new);
3059
- //All new elements correctly constructed, avoid new element destruction
3060
- this->m_holder.set_stored_size(new_size);
3061
- }
3062
- //Old values destroyed automatically with "old_values_destroyer"
3063
- //when "old_values_destroyer" goes out of scope unless the have trivial
3064
- //destructor after move.
3065
- BOOST_IF_CONSTEXPR(value_traits::trivial_dctr_after_move)
3066
- old_values_destroyer.release();
3067
- }
3068
- //s_before is so big that divides old_end
3069
- else{
3070
- //Old situation:
3071
- // __________________________________________________
3072
- //| raw_mem | old_begin | old_end |
3073
- //| ___________________________|___________|_________|
3074
- //
3075
- //New situation:
3076
- // __________________________________________________
3077
- //| old_begin | new | old_end | raw_mem |
3078
- //|___________|__________|_________|_________________|
3079
- //
3080
- //Now initialize the rest of memory with the last old values
3081
- //All new elements correctly constructed, avoid new element destruction
3082
- BOOST_IF_CONSTEXPR(!value_traits::trivial_dctr){
3083
- const size_type raw_gap = s_before - before_plus_new;
3084
- //Now initialize the rest of s_before memory with the
3085
- //first of elements after new values
3086
- ::boost::container::uninitialized_move_alloc_n(a, pos, raw_gap, new_start + before_plus_new);
3087
- //Now we have a contiguous buffer so program trailing element destruction
3088
- //and update size to the final size.
3089
- old_values_destroyer.shrink_forward(new_size-s_before);
3090
- this->m_holder.set_stored_size(new_size);
3091
- //Now move remaining last objects in the old buffer begin
3092
- T * const remaining_pos = pos + raw_gap;
3093
- if(remaining_pos != old_start){ //Make sure data has to be moved
3094
- ::boost::container::move(remaining_pos, old_finish, old_start);
3095
- }
3096
- //Once moved, avoid calling the destructors if trivial after move
3097
- BOOST_IF_CONSTEXPR(value_traits::trivial_dctr_after_move){
3098
- old_values_destroyer.release();
3099
- }
3100
- }
3101
- else{ //If trivial destructor, we can uninitialized copy + copy in a single uninitialized copy
3102
- ::boost::container::uninitialized_move_alloc_n
3103
- (a, pos, static_cast<size_type>(old_finish - pos), new_start + before_plus_new);
3104
- this->m_holder.set_stored_size(new_size);
3105
- old_values_destroyer.release();
3106
- }
3107
- }
3108
- }
3109
- else{
3110
- //Check if we have to do the insertion in two phases
3111
- //since maybe s_before is not big enough and
3112
- //the buffer was expanded both sides
3113
- //
3114
- //Old situation:
3115
- // _________________________________________________
3116
- //| raw_mem | old_begin + old_end | raw_mem |
3117
- //|_________|_____________________|_________________|
3118
- //
3119
- //New situation with do_after:
3120
- // _________________________________________________
3121
- //| old_begin + new + old_end | raw_mem |
3122
- //|___________________________________|_____________|
3123
- //
3124
- //New without do_after:
3125
- // _________________________________________________
3126
- //| old_begin + new + old_end | raw_mem |
3127
- //|____________________________|____________________|
3128
- //
3129
- const bool do_after = n > s_before;
3130
-
3131
- //Now we can have two situations: the raw_mem of the
3132
- //beginning divides the old_begin, or the new elements:
3133
- if (s_before <= elemsbefore) {
3134
- //The raw memory divides the old_begin group:
3135
- //
3136
- //If we need two phase construction (do_after)
3137
- //new group is divided in new = new_beg + new_end groups
3138
- //In this phase only new_beg will be inserted
3139
- //
3140
- //Old situation:
3141
- // _________________________________________________
3142
- //| raw_mem | old_begin | old_end | raw_mem |
3143
- //|_________|___________|_________|_________________|
3144
- //
3145
- //New situation with do_after(1):
3146
- //This is not definitive situation, the second phase
3147
- //will include
3148
- // _________________________________________________
3149
- //| old_begin | new_beg | old_end | raw_mem |
3150
- //|___________|_________|_________|_________________|
3151
- //
3152
- //New situation without do_after:
3153
- // _________________________________________________
3154
- //| old_begin | new | old_end | raw_mem |
3155
- //|___________|_____|_________|_____________________|
3156
- //
3157
- //Copy the first part of old_begin to raw_mem
3158
- ::boost::container::uninitialized_move_alloc_n(a, old_start, s_before, new_start);
3159
- //The buffer is all constructed until old_end,
3160
- //so program trailing destruction and assign final size
3161
- //if !do_after, s_before+n otherwise.
3162
- size_type new_1st_range;
3163
- if(do_after){
3164
- new_1st_range = s_before;
3165
- //release destroyer and update size
3166
- old_values_destroyer.release();
3167
- }
3168
- else{
3169
- new_1st_range = n;
3170
- BOOST_IF_CONSTEXPR(value_traits::trivial_dctr_after_move){
3171
- old_values_destroyer.release();
3172
- }
3173
- else{
3174
- old_values_destroyer.shrink_forward(old_size - (s_before - n));
3175
- }
3176
- }
3177
- this->m_holder.set_stored_size(old_size + new_1st_range);
3178
- //Now copy the second part of old_begin overwriting itself
3179
- T *const next = ::boost::container::move(old_start + s_before, pos, old_start);
3180
- //Now copy the new_beg elements
3181
- insert_range_proxy.copy_n_and_update(a, next, new_1st_range);
3182
-
3183
- //If there is no after work and the last old part needs to be moved to front, do it
3184
- if(!do_after && (n != s_before)){
3185
- //Now displace old_end elements
3186
- ::boost::container::move(pos, old_finish, next + new_1st_range);
3187
- }
3188
- }
3189
- else {
3190
- //If we have to expand both sides,
3191
- //we will play if the first new values so
3192
- //calculate the upper bound of new values
3193
-
3194
- //The raw memory divides the new elements
3195
- //
3196
- //If we need two phase construction (do_after)
3197
- //new group is divided in new = new_beg + new_end groups
3198
- //In this phase only new_beg will be inserted
3199
- //
3200
- //Old situation:
3201
- // _______________________________________________________
3202
- //| raw_mem | old_begin | old_end | raw_mem |
3203
- //|_______________|___________|_________|_________________|
3204
- //
3205
- //New situation with do_after():
3206
- // ____________________________________________________
3207
- //| old_begin | new_beg | old_end | raw_mem |
3208
- //|___________|_______________|_________|______________|
3209
- //
3210
- //New situation without do_after:
3211
- // ______________________________________________________
3212
- //| old_begin | new | old_end | raw_mem |
3213
- //|___________|_____|_________|__________________________|
3214
- //
3215
- //First copy whole old_begin and part of new to raw_mem
3216
- T * const new_pos = ::boost::container::uninitialized_move_alloc
3217
- (a, old_start, pos, new_start);
3218
- this->m_holder.set_stored_size(elemsbefore);
3219
- const size_type mid_n = s_before - elemsbefore;
3220
- insert_range_proxy.uninitialized_copy_n_and_update(a, new_pos, mid_n);
3221
- //The buffer is all constructed until old_end,
3222
- //release destroyer
3223
- this->m_holder.set_stored_size(old_size + s_before);
3224
- old_values_destroyer.release();
3225
-
3226
- if(do_after){
3227
- //Copy new_beg part
3228
- insert_range_proxy.copy_n_and_update(a, old_start, elemsbefore);
3229
- }
3230
- else{
3231
- //Copy all new elements
3232
- const size_type rest_new = n - mid_n;
3233
- insert_range_proxy.copy_n_and_update(a, old_start, rest_new);
3234
-
3235
- T* const move_start = old_start + rest_new;
3236
- //Displace old_end, but make sure data has to be moved
3237
- T* const move_end = move_start != pos ? ::boost::container::move(pos, old_finish, move_start)
3238
- : old_finish;
3239
- (void)move_end; //To avoid warnings of unused initialization for move_end in case
3240
- //trivial_dctr_after_move is true
3241
- //Destroy remaining moved elements from old_end except if they
3242
- //have trivial destructor after being moved
3243
- const size_type n_destroy = s_before - n;
3244
- BOOST_IF_CONSTEXPR(!value_traits::trivial_dctr_after_move){
3245
- boost::container::destroy_alloc_n(a, move_end, n_destroy);
3246
- }
3247
- this->m_holder.dec_stored_size(n_destroy);
3248
- }
3249
- }
3306
+ expand_backward_forward_and_insert_alloc(old_start, old_size, new_start, pos, n, insert_range_proxy, a);
3250
3307
 
3251
- //This is only executed if two phase construction is needed
3252
- if(do_after){
3253
- //The raw memory divides the new elements
3254
- //
3255
- //Old situation:
3256
- // ______________________________________________________
3257
- //| raw_mem | old_begin | old_end | raw_mem |
3258
- //|______________|___________|____________|______________|
3259
- //
3260
- //New situation with do_after(1):
3261
- // _______________________________________________________
3262
- //| old_begin + new_beg | new_end |old_end | raw_mem |
3263
- //|__________________________|_________|________|_________|
3264
- //
3265
- //New situation with do_after(2):
3266
- // ______________________________________________________
3267
- //| old_begin + new | old_end |raw |
3268
- //|_______________________________________|_________|____|
3269
- //
3270
- const size_type n_after = n - s_before;
3271
- const size_type elemsafter = old_size - elemsbefore;
3272
-
3273
- //We can have two situations:
3274
- if (elemsafter >= n_after){
3275
- //The raw_mem from end will divide displaced old_end
3276
- //
3277
- //Old situation:
3278
- // ______________________________________________________
3279
- //| raw_mem | old_begin | old_end | raw_mem |
3280
- //|______________|___________|____________|______________|
3281
- //
3282
- //New situation with do_after(1):
3283
- // _______________________________________________________
3284
- //| old_begin + new_beg | new_end |old_end | raw_mem |
3285
- //|__________________________|_________|________|_________|
3286
- //
3287
- //First copy the part of old_end raw_mem
3288
- T* finish_n = old_finish - n_after;
3289
- ::boost::container::uninitialized_move_alloc(a, finish_n, old_finish, old_finish);
3290
- this->m_holder.inc_stored_size(n_after);
3291
- //Displace the rest of old_end to the new position
3292
- boost::container::move_backward(pos, finish_n, old_finish);
3293
- //Now overwrite with new_end
3294
- //The new_end part is [first + (n - n_after), last)
3295
- insert_range_proxy.copy_n_and_update(a, pos, n_after);
3296
- }
3297
- else {
3298
- //The raw_mem from end will divide new_end part
3299
- //
3300
- //Old situation:
3301
- // _____________________________________________________________
3302
- //| raw_mem | old_begin | old_end | raw_mem |
3303
- //|______________|___________|____________|_____________________|
3304
- //
3305
- //New situation with do_after(2):
3306
- // _____________________________________________________________
3307
- //| old_begin + new_beg | new_end |old_end | raw_mem |
3308
- //|__________________________|_______________|________|_________|
3309
-
3310
- //First initialize data in raw memory
3311
- const size_type mid_last_dist = n_after - elemsafter;
3312
-
3313
- //Copy to the old_end part to the uninitialized zone leaving a gap.
3314
- ::boost::container::uninitialized_move_alloc(a, pos, old_finish, old_finish + mid_last_dist);
3315
-
3316
- array_destructor_t old_end_destroyer(old_finish + mid_last_dist, a, static_cast<size_type>(old_finish - pos));
3317
-
3318
- //Copy the first part to the already constructed old_end zone
3319
- insert_range_proxy.copy_n_and_update(a, pos, elemsafter);
3320
- //Copy the rest to the uninitialized zone filling the gap
3321
- insert_range_proxy.uninitialized_copy_n_and_update(a, old_finish, mid_last_dist);
3322
- this->m_holder.inc_stored_size(n_after);
3323
- old_end_destroyer.release();
3324
- }
3325
- }
3326
- }
3308
+ //Update the vector buffer information to a safe state
3309
+ this->m_holder.m_size = stored_size_type(old_size + n);
3327
3310
  }
3328
3311
 
3329
3312
  void priv_throw_if_out_of_range(size_type n) const
@@ -3334,12 +3317,12 @@ private:
3334
3317
  }
3335
3318
  }
3336
3319
 
3337
- BOOST_CONTAINER_FORCEINLINE bool priv_in_range(const_iterator pos) const
3320
+ inline bool priv_in_range(const_iterator pos) const
3338
3321
  {
3339
3322
  return (this->begin() <= pos) && (pos < this->end());
3340
3323
  }
3341
3324
 
3342
- BOOST_CONTAINER_FORCEINLINE bool priv_in_range_or_end(const_iterator pos) const
3325
+ inline bool priv_in_range_or_end(const_iterator pos) const
3343
3326
  {
3344
3327
  return (this->begin() <= pos) && (pos <= this->end());
3345
3328
  }
@@ -3360,11 +3343,11 @@ private:
3360
3343
 
3361
3344
  template <typename InputIterator>
3362
3345
  vector(InputIterator, InputIterator) ->
3363
- vector<typename iterator_traits<InputIterator>::value_type>;
3346
+ vector<typename iter_value<InputIterator>::type>;
3364
3347
 
3365
3348
  template <typename InputIterator, typename Allocator>
3366
3349
  vector(InputIterator, InputIterator, Allocator const&) ->
3367
- vector<typename iterator_traits<InputIterator>::value_type, Allocator>;
3350
+ vector<typename iter_value<InputIterator>::type, Allocator>;
3368
3351
 
3369
3352
  #endif
3370
3353
 
@@ -3382,8 +3365,8 @@ struct has_trivial_destructor_after_move<boost::container::vector<T, Allocator,
3382
3365
  {
3383
3366
  typedef typename boost::container::vector<T, Allocator, Options>::allocator_type allocator_type;
3384
3367
  typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
3385
- static const bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
3386
- ::boost::has_trivial_destructor_after_move<pointer>::value;
3368
+ BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
3369
+ ::boost::has_trivial_destructor_after_move<pointer>::value;
3387
3370
  };
3388
3371
 
3389
3372
  }
@@ -3391,6 +3374,8 @@ struct has_trivial_destructor_after_move<boost::container::vector<T, Allocator,
3391
3374
  //See comments on vec_iterator::element_type to know why is this needed
3392
3375
  #ifdef BOOST_GNU_STDLIB
3393
3376
 
3377
+ #include <boost/move/detail/std_ns_begin.hpp>
3378
+
3394
3379
  BOOST_MOVE_STD_NS_BEG
3395
3380
 
3396
3381
  template <class Pointer, bool IsConst>
@@ -3400,6 +3385,8 @@ struct pointer_traits< boost::container::vec_iterator<Pointer, IsConst> >
3400
3385
 
3401
3386
  BOOST_MOVE_STD_NS_END
3402
3387
 
3388
+ #include <boost/move/detail/std_ns_end.hpp>
3389
+
3403
3390
  #endif //BOOST_GNU_STDLIB
3404
3391
 
3405
3392
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED