microsoft/STL vs-2022-17.13
microsoft/STL
Captured source
source ↗VS 2022 17.13
Repository: microsoft/STL
Tag: vs-2022-17.13
Published: 2025-02-16T07:39:04Z
Prerelease: no
Release notes:
+ P2787R1 pmr::generator
+ P3235R3 std::print More Types Faster With Less Memory
- Fixed bugs:
- Fixed an infinite loop in
deque::shrink_to_fit(). #4955
+ This fixed a regression that was introduced by #4091 in VS 2022 17.10.
- Fixed compiler errors when constructing highly unusual
unique_ptrs (storing fancy pointers) from unspeakably evil relics of the forgotten past. #4922 - Fixed compiler errors when calling
ranges::inplace_mergewith certain combinations of elements, projections, and comparisons. #4927 - Fixed compiler errors in
basic_ispanstream's constructor andbasic_ispanstream::span()takingReadOnlyRange&&with highly unusual types. #4938 - Fixed compiler errors in the highly unusual scenario of calling
basic_stringandbasic_string_view'sfind_first_of()family of member functions for program-defined "unicorn" character types. #4951 - Fixed compiler errors when constructing
optionalfrom highly unusual types. #4961 - Fixed sequence container emplacement functions (e.g.
vector::emplace_back()) to avoid emitting "warning C5046: Symbol involving type with internal linkage not defined" for highly unusual types. #4963 #4980
+ This also fixed ODR violations when mixing C++14 with C++17-and-later translation units calling sequence container emplacement functions for any types.
- Fixed ODR violations when mixing C++17 with C++20-and-later translation units calling
list/forward_list::remove/remove_if/unique(). #4975 - Fixed compiler errors in
variant's converting constructor and converting assignment operator for certain types. #4966 - Fixed
bitset's streaming operatoroperator>>(basic_istream&, bitset&)to use the stream'sTraitsto compare characters. #4970 - Fixed
basic_stringandlist's internal constructors to avoid disrupting highly unusual scenarios. #4976 - Fixed compiler errors when constructing a
packaged_taskfrom a move-only function object. #4946 - For Clang
/fp:fast, fixed `andto avoid emitting-Wnan-infinity-disabledwarnings, except whennumeric_limits::infinity()/quiet_NaN()/signaling_NaN()` are specifically called. #4990 - Fixed
ranges::copy_nto properly handle negative values of n (as a no-op) when activating ourmemmove()optimization. #5046
+ Also fixed our memmove() optimization (used by copy_n(), ranges::copy_n, and more) to avoid emitting compiler warnings with certain iterators.
- Fixed
filesystem::directory_entry::refresh()to avoid sporadically failing for nonexistent network paths on Windows 11 24H2. #5077 - Fixed
basic_istream::get()andbasic_istream::getline()to never write a null terminator into zero-sized buffers, and to always write a null terminator otherwise. #5073 - Fixed
assign_range()for sequence containers tostatic_assertthat the container elements are assignable from the range's reference type. #5086 - Fixed compiler errors in various ranges algorithms when used with
views::iotain certain scenarios. #5091 - Improved performance:
- Added vectorized implementations of:
+ basic_string::find_first_of(). #4744 + basic_string::find_last_of(). #4934 + basic_string::find() for a substring. #5048 + basic_string::rfind() for a substring. #5057 + basic_string::rfind() for a single character. #5087 + search(), ranges::search, and default_searcher, for 1-byte and 2-byte elements. #4745 + find_end() and ranges::find_end, for 1-byte and 2-byte elements. #4943 #5041 #5042 + bitset's constructors from strings. #4839 + remove() and ranges::remove. #4987
- Improved the vectorized implementations of:
+ ranges::minmax, now activated for 1-byte and 2-byte elements. #4913 + The minmax_element() and minmax() algorithm families. #4917 #5016
- Helped the compiler auto-vectorize:
+ swap() and ranges::swap for arrays. #4991 + adjacent_difference(). #4958 #5061 #5079 #5097
Excerpt shown — open the source for the full document.