SIGN IN SIGN UP
microsoft / STL UNCLAIMED

MSVC's implementation of the C++ Standard Library.

0 0 0 C++

TAGS

2 tags
vs-2019-16.6

VS 2019 16.6 - Merged C++20 features: * [P0122R7](https://wg21.link/P0122R7) [#142](https://github.com/microsoft/STL/pull/142) [#474](https://github.com/microsoft/STL/pull/474) `<span>` + [P1024R3](https://wg21.link/P1024R3) Enhancing `span` Usability + [P1085R2](https://wg21.link/P1085R2) Removing `span` Comparisons + [P1227R2](https://wg21.link/P1227R2) Unsigned `span::size()` + [P1394R4](https://wg21.link/P1394R4) Range Constructor For `span` + [P1872R0](https://wg21.link/P1872R0) `span` Should Have `size_type`, Not `index_type` + [LWG-3101](https://wg21.link/lwg3101) `span`'s `Container` constructors need another constraint + [LWG-3102](https://wg21.link/lwg3102) Clarify `span` `iterator` and `const_iterator` behavior + [LWG-3103](https://wg21.link/lwg3103) Errors in taking subview of `span` should be ill-formed where possible + [LWG-3144](https://wg21.link/lwg3144) `span` does not have a `const_pointer` typedef + [LWG-3198](https://wg21.link/lwg3198) Bad constraint on `std::span::span()` + [LWG-3274](https://wg21.link/lwg3274) Missing feature test macro for `<span>` + [LWG-3369](https://wg21.link/lwg3369) `span`'s deduction-guide for built-in arrays doesn't work * [P0202R3](https://wg21.link/P0202R3) [#425](https://github.com/microsoft/STL/pull/425) `constexpr` For `<algorithm>` And `exchange()` + [LWG-3256](https://wg21.link/lwg3256) Feature testing macro for `constexpr` algorithms * [P0357R3](https://wg21.link/P0357R3) [#393](https://github.com/microsoft/STL/pull/393) Supporting Incomplete Types In `reference_wrapper` * [P0619R4](https://wg21.link/P0619R4) [#380](https://github.com/microsoft/STL/pull/380) Removing C++17-Deprecated Features In C++20 * [P0879R0](https://wg21.link/P0879R0) [#425](https://github.com/microsoft/STL/pull/425) `constexpr` For Swapping Functions * [P0883R2](https://wg21.link/P0883R2) [#390](https://github.com/microsoft/STL/pull/390) Fixing Atomic Initialization * [P0935R0](https://wg21.link/P0935R0) [#415](https://github.com/microsoft/STL/pull/415) Eradicating Unnecessarily Explicit Default Constructors * [P1006R1](https://wg21.link/P1006R1) [#397](https://github.com/microsoft/STL/pull/397) `constexpr` For `pointer_traits<T*>::pointer_to()` * [P1165R1](https://wg21.link/P1165R1) [#467](https://github.com/microsoft/STL/pull/467) Consistently Propagating Stateful Allocators In `basic_string`'s `operator+()` * [P1423R3](https://wg21.link/P1423R3) [#470](https://github.com/microsoft/STL/pull/470) `char8_t` Backward Compatibility Remediation * [P1645R1](https://wg21.link/P1645R1) [#399](https://github.com/microsoft/STL/pull/399) `constexpr` For `<numeric>` Algorithms * [P1964R2](https://wg21.link/P1964R2) [#565](https://github.com/microsoft/STL/pull/565) Replacing `boolean` With _`boolean-testable`_ * [P2091R0](https://wg21.link/P2091R0) [#565](https://github.com/microsoft/STL/pull/565) Fixing Issues With Range Access CPOs * [P2102R0](https://wg21.link/P2102R0) [#565](https://github.com/microsoft/STL/pull/565) Making "Implicit Expression Variations" More Explicit - Merged *partial* C++20 features: * [P0768R1](https://wg21.link/P0768R1) Library Support For The Spaceship Comparison Operator `<=>` + [#402](https://github.com/microsoft/STL/pull/402) Deprecated `std::rel_ops`. * [P0896R4](https://wg21.link/P0896R4) Ranges: + [#389](https://github.com/microsoft/STL/pull/389) some Ranges concepts, including [P1456R1](https://wg21.link/P1456R1) Move-Only Views and [P1870R1](https://wg21.link/P1870R1) `safe_range`. + [#432](https://github.com/microsoft/STL/pull/432) [P2091R0](https://wg21.link/P2091R0) Issues With Range Access CPOs. + [#565](https://github.com/microsoft/STL/pull/565) algorithms `ranges::all_of`, `ranges::any_of`, `ranges::copy`, `ranges::copy_if`, `ranges::copy_n`, `ranges::count`, `ranges::count_if`, `ranges::equal`, `ranges::find`, `ranges::find_if`, `ranges::find_if_not`, `ranges::for_each`, `ranges::for_each_n`, `ranges::mismatch`, and `ranges::none_of`. + [#589](https://github.com/microsoft/STL/pull/589) changes to `std::back_insert_iterator`, `std::front_insert_iterator`, and `std::insert_iterator` necessary to model the Ranges iterator concepts. - Merged LWG issue resolutions: * [LWG-3194](https://wg21.link/lwg3194) [#565](https://github.com/microsoft/STL/pull/565) `ConvertibleTo` prose does not match code * [LWG-3326](https://wg21.link/lwg3326) [#588](https://github.com/microsoft/STL/pull/588) `enable_view` has false positives * [LWG-3335](https://wg21.link/lwg3335) [#514](https://github.com/microsoft/STL/pull/514) Addition of `range_size_t` to `<ranges>` * [LWG-3356](https://wg21.link/lwg3356) [#404](https://github.com/microsoft/STL/pull/404) `__cpp_lib_nothrow_convertible` should be `__cpp_lib_is_nothrow_convertible` * [LWG-3379](https://wg21.link/lwg3379) [#565](https://github.com/microsoft/STL/pull/565) "`safe`" in several library names is misleading - Added test suites (not yet running): * `tests/libcxx` [#394](https://github.com/microsoft/STL/pull/394) [#446](https://github.com/microsoft/STL/pull/446) * `tests/std` [#498](https://github.com/microsoft/STL/pull/498) * `tests/tr1` [#485](https://github.com/microsoft/STL/pull/485) - Fixed bugs: * `complex` `acos()`, `acosh()`, and `asinh()` now return correct results. [#401](https://github.com/microsoft/STL/pull/401) * `complex` `pow()` is now overloaded correctly. [#383](https://github.com/microsoft/STL/pull/383) * Fixed `std::filesystem::remove()` on ReFS. [#407](https://github.com/microsoft/STL/pull/407) * Avoided using `iter[idx]` in all algorithms, because it's problematic with some unusual but Standard-conforming iterators. [#464](https://github.com/microsoft/STL/pull/464) * `<system_error>` now maps `ERROR_BROKEN_PIPE` to `errc::broken_pipe`. [#406](https://github.com/microsoft/STL/pull/406) * Fixed a compiler error when compiling with the Intel C++ Compiler, because it hadn't implemented C++20 conditional `explicit` in C++14/17 mode. [#424](https://github.com/microsoft/STL/pull/424) + *Note:* The Intel C++ Compiler remains unsupported by MSVC. * Fixed the visualizers for `atomic` and `atomic_flag`. [#315](https://github.com/microsoft/STL/issues/315) - Improved performance: * Significantly improved performance of `string + null terminated` and `null terminated + string` `operator+` overloads in `<string>`. [#467](https://github.com/microsoft/STL/pull/467) * Reduced memory consumption of `system_category().message()`. [#457](https://github.com/microsoft/STL/pull/457) * Optimized `is_permutation()` and `operator==` for unordered multi-containers. [#423](https://github.com/microsoft/STL/pull/423) - Improved throughput: * Significantly improved compile times for `<iterator>` and `<array>`. Note that this is a source-breaking change for user code that expected STL headers to include other headers in certain ways. [#355](https://github.com/microsoft/STL/pull/355) - Code cleanups: * `src/syserror.cpp` now uses range-for and `static_cast`. [#481](https://github.com/microsoft/STL/pull/481) * Changed macro constants to `constexpr` variables. [#487](https://github.com/microsoft/STL/pull/487) * Cleaned up the implementation of `sort()`. [#449](https://github.com/microsoft/STL/pull/449) * Added `static_assert` `is_sorted()` for lookup tables. [#451](https://github.com/microsoft/STL/pull/451) * Removed compiler workarounds. [#410](https://github.com/microsoft/STL/pull/410) [#452](https://github.com/microsoft/STL/pull/452) [#453](https://github.com/microsoft/STL/pull/453) [#454](https://github.com/microsoft/STL/pull/454) * Added compiler workarounds. [#475](https://github.com/microsoft/STL/pull/475) * Updated the STL's required compiler to MSVC 19.25. [#430](https://github.com/microsoft/STL/pull/430) * Enabled clang-format for slightly more code. [#458](https://github.com/microsoft/STL/pull/458) - Infrastructure improvements: * Fixed errors when building the STL with Boost 1.72. [#447](https://github.com/microsoft/STL/pull/447) [#428](https://github.com/microsoft/STL/pull/428) * Improved how the CI builds boost-math. [#450](https://github.com/microsoft/STL/pull/450) - Updated `_MSVC_STL_UPDATE`. [#429](https://github.com/microsoft/STL/pull/429) [#486](https://github.com/microsoft/STL/pull/486)

vs-2019-16.5

VS 2019 16.5 - Hello, world! * Announced this repo at [CppCon 2019](https://cppcon.org/). * Added initial documentation: readme, license, and roadmap. * Added initial CMake build scripts for Desktop-only msvcp. [#5](https://github.com/microsoft/STL/pull/5) [#80](https://github.com/microsoft/STL/pull/80) [#98](https://github.com/microsoft/STL/pull/98) [#101](https://github.com/microsoft/STL/pull/101) * Investigated continuous integration options, like GitHub Actions or Azure Pipelines. (Chose Azure Pipelines.) * Automated builds running in PRs. [#114](https://github.com/microsoft/STL/pull/114) * Investigated test harness solutions, either building our own to more closely match the internal system in a reasonable way, or using libcxx's `lit`. (Chose to use `lit`.) * Began auditing test case source files from the `std` and `tr1` test suites. * Implemented [Custom Autolinks](https://github.com/microsoft/STL/wiki/Custom-Autolinks) in this repo. - Merged C++20 features: * [P0325R4](https://wg21.link/P0325R4) [#135](https://github.com/microsoft/STL/pull/135) `to_array()` * [P0340R3](https://wg21.link/P0340R3) [#284](https://github.com/microsoft/STL/pull/284) SFINAE-Friendly `underlying_type` * [P0356R5](https://wg21.link/P0356R5) [#158](https://github.com/microsoft/STL/pull/158) `bind_front()` + [P1651R0](https://wg21.link/P1651R0) `bind_front()` Should Not Unwrap `reference_wrapper` + [LWG-3184](https://wg21.link/lwg3184) Inconsistencies in `bind_front` wording * [P0439R0](https://wg21.link/P0439R0) [#124](https://github.com/microsoft/STL/pull/124) `enum class memory_order` * [P0553R4](https://wg21.link/P0553R4) [#310](https://github.com/microsoft/STL/pull/310) `<bit>` Rotating And Counting Functions * [P0556R3](https://wg21.link/P0556R3) [#310](https://github.com/microsoft/STL/pull/310) `<bit>` `ispow2()`, `ceil2()`, `floor2()`, ~~`log2p1()`~~ `bit_length()` + [P1355R2](https://wg21.link/P1355R2) Narrow Contract For `ceil2()` * [P0595R2](https://wg21.link/P0595R2) [#353](https://github.com/microsoft/STL/pull/353) `is_constant_evaluated()` * [P0631R8](https://wg21.link/P0631R8) [#261](https://github.com/microsoft/STL/pull/261) `<numbers>` Math Constants * [P0655R1](https://wg21.link/P0655R1) [#201](https://github.com/microsoft/STL/pull/201) `visit<R>()` * [P0738R2](https://wg21.link/P0738R2) [#246](https://github.com/microsoft/STL/pull/246) `istream_iterator` Cleanup * [P0767R1](https://wg21.link/P0767R1) [#179](https://github.com/microsoft/STL/pull/179) Deprecating `is_pod` * [P0966R1](https://wg21.link/P0966R1) [#176](https://github.com/microsoft/STL/pull/176) `string::reserve()` Should Not Shrink * [P1209R0](https://wg21.link/P1209R0) [#236](https://github.com/microsoft/STL/pull/236) `erase_if()`, `erase()` * [P1227R2](https://wg21.link/P1227R2) [#130](https://github.com/microsoft/STL/pull/130) Signed `std::ssize()` * [P1357R1](https://wg21.link/P1357R1) [#127](https://github.com/microsoft/STL/pull/127) `is_bounded_array`, `is_unbounded_array` * [P1612R1](https://wg21.link/P1612R1) [#305](https://github.com/microsoft/STL/pull/305) Relocating `endian` To `<bit>` * [P1690R1](https://wg21.link/P1690R1) [#341](https://github.com/microsoft/STL/pull/341) Refining Heterogeneous Lookup For Unordered Containers * [P1902R1](https://wg21.link/P1902R1) [#287](https://github.com/microsoft/STL/pull/287) [#353](https://github.com/microsoft/STL/pull/353) Missing Feature-Test Macros 2017-2019 * [P1959R0](https://wg21.link/P1959R0) [#381](https://github.com/microsoft/STL/pull/381) Removing `weak_equality` And `strong_equality` - Merged *partial* C++20 features: * [P0896R4](https://wg21.link/P0896R4) [#82](https://github.com/microsoft/STL/pull/82) [#84](https://github.com/microsoft/STL/pull/84) [#91](https://github.com/microsoft/STL/pull/91) [#93](https://github.com/microsoft/STL/pull/93) [#95](https://github.com/microsoft/STL/pull/95) [#329](https://github.com/microsoft/STL/pull/329) [#352](https://github.com/microsoft/STL/pull/352) Ranges * [P1614R2](https://wg21.link/P1614R2) [#242](https://github.com/microsoft/STL/pull/242) Adding Spaceship `<=>` To The Library - Merged LWG issue resolutions: * [LWG-2899](https://wg21.link/lwg2899) [#193](https://github.com/microsoft/STL/pull/193) `is_(nothrow_)move_constructible` and `tuple`, `optional`, and `unique_ptr` * [LWG-3158](https://wg21.link/lwg3158) [#195](https://github.com/microsoft/STL/pull/195) `tuple(allocator_arg_t, const Alloc&)` should be conditionally explicit * [LWG-3199](https://wg21.link/lwg3199) [#353](https://github.com/microsoft/STL/pull/353) `istream >> bitset<0>` fails * [LWG-3257](https://wg21.link/lwg3257) [#353](https://github.com/microsoft/STL/pull/353) Missing feature testing macro update from P0858 * [LWG-3266](https://wg21.link/lwg3266) [#353](https://github.com/microsoft/STL/pull/353) `to_chars(bool)` should be deleted - Merged *proposed* resolutions for LWG issues (not yet accepted for the C++ Working Draft, but we've chosen to implement this speculatively): * [LWG-3268](https://wg21.link/lwg3268) [#151](https://github.com/microsoft/STL/pull/151) `memory_order::memory_order_meow` broken in C++20 - Fixed bugs: * Restored `swap(unique_ptr&, unique_ptr&)` which was mistakenly removed. [#170](https://github.com/microsoft/STL/pull/170) * When erasing an empty range in a `vector`, avoided self-move-assigning all elements. [#228](https://github.com/microsoft/STL/pull/228) * Removed a `noexcept` that was incorrectly applied to an allocating helper function in `list`. [#77](https://github.com/microsoft/STL/pull/77) * `valarray` now uses argument-dependent lookup when calling `sin()`, `cos()`, `pow()`, `sqrt()`, etc. as required by the Standard. [#286](https://github.com/microsoft/STL/pull/286) * Fixed `<filesystem>` linker errors for UWP developers. [#356](https://github.com/microsoft/STL/pull/356) * Changed the return type of `locale`'s assignment operator to `const locale&` as (perhaps surprisingly) required by the Standard. [#324](https://github.com/microsoft/STL/pull/324) * Fixed `regex_token_iterator` to return correct results. [#131](https://github.com/microsoft/STL/pull/131) * Non-member `begin()` and `end()` now take `basic_string_view` by value as required by the Standard. [#119](https://github.com/microsoft/STL/pull/119) * Fixed `list::splice()` to work correctly when splicing exactly half of one `list` into another. [#129](https://github.com/microsoft/STL/pull/129) - Improved performance: * Fixed a codegen size regression in `atomic<integral>` and `atomic<pointer>`. [#227](https://github.com/microsoft/STL/pull/227) * Activated x64 FrameHandler4 exception handling, reducing the size of `msvcp140.dll` from 588 KB to 528 KB. [#154](https://github.com/microsoft/STL/pull/154) * Reduced the stack space consumption of `list` and `forward_list` insertion. [#366](https://github.com/microsoft/STL/pull/366) * Improved the performance of 64-bit `atomic` loads on x86. [#87](https://github.com/microsoft/STL/pull/87) - Improved throughput: * Used `if constexpr` instead of tag dispatch in `<any>`. [#173](https://github.com/microsoft/STL/pull/173) - Enhanced behavior: * Improved the error message for `function<Ret (Args) noexcept>`. [#350](https://github.com/microsoft/STL/pull/350) * `any` now supports over-aligned types. [#173](https://github.com/microsoft/STL/pull/173) * Improved the messages that are emitted when including newer headers in older Standard modes. [#252](https://github.com/microsoft/STL/pull/252) * Strengthened `noexcept` for `exchange()`. [#364](https://github.com/microsoft/STL/pull/364) * `std::function` now avoids using `typeid(void)` in our `_HAS_STATIC_RTTI=0` mode, for compatibility with Clang's `-fno-rtti` mode. [#375](https://github.com/microsoft/STL/pull/375) * Added an error message explaining that the `<experimental/coroutine>`, `<experimental/generator>`, and `<experimental/resumable>` headers aren't supported with Clang. [#136](https://github.com/microsoft/STL/pull/136) - Code cleanups: * Removed unnecessary `public` keywords in `struct` inheritance. [#219](https://github.com/microsoft/STL/pull/219) * Used `iter[idx]` for clarity in `<algorithm>`. [#289](https://github.com/microsoft/STL/pull/289) (Note that this was reverted in VS 2019 16.6 by [#464](https://github.com/microsoft/STL/pull/464).) * Fixed typos in comments and error messages. [#96](https://github.com/microsoft/STL/pull/96) * Marked more `virtual` member functions as `override`. [#302](https://github.com/microsoft/STL/pull/302) * Fused files together. [#220](https://github.com/microsoft/STL/pull/220) [#374](https://github.com/microsoft/STL/pull/374) * Consistently used the modern `int = 0` SFINAE technique. [#226](https://github.com/microsoft/STL/pull/226) [#244](https://github.com/microsoft/STL/pull/244) [#328](https://github.com/microsoft/STL/pull/328) * Removed compiler bug workarounds. [#175](https://github.com/microsoft/STL/pull/175) [#301](https://github.com/microsoft/STL/pull/301) [#372](https://github.com/microsoft/STL/pull/372) * Various cleanups (described in detail in the PRs, not repeated here). [#168](https://github.com/microsoft/STL/pull/168) [#221](https://github.com/microsoft/STL/pull/221) [#269](https://github.com/microsoft/STL/pull/269) [#320](https://github.com/microsoft/STL/pull/320) [#373](https://github.com/microsoft/STL/pull/373) - Improved documentation: * Added a comment explaining part of `invoke()`'s implementation. [#368](https://github.com/microsoft/STL/pull/368) - Infrastructure improvements: * Added clang-format validation. [#132](https://github.com/microsoft/STL/pull/132) [#163](https://github.com/microsoft/STL/pull/163) [#255](https://github.com/microsoft/STL/pull/255) * Added more code format validation. [#229](https://github.com/microsoft/STL/pull/229) * Updated dependencies. [#167](https://github.com/microsoft/STL/pull/167) [#205](https://github.com/microsoft/STL/pull/205) [#231](https://github.com/microsoft/STL/pull/231) + Updated build compiler to VS 2019 16.4 Preview 2 (now required). + Updated Clang to 9.0.0 (now required). - Updated `_MSVC_STL_UPDATE`. [#253](https://github.com/microsoft/STL/pull/253) [#358](https://github.com/microsoft/STL/pull/358)