ReleaseMicrosoftMicrosoftpublished Feb 16, 2025seen 1d

microsoft/STL vs-2022-17.13

microsoft/STL

Open original ↗

Captured source

source ↗
published Feb 16, 2025seen 1dcaptured 9hhttp 200method plain

VS 2022 17.13

Repository: microsoft/STL

Tag: vs-2022-17.13

Published: 2025-02-16T07:39:04Z

Prerelease: no

Release notes:

  • Merged C++23 features:
  • P2502R2 #4953 ``: Synchronous Coroutine Generator For Ranges

+ P2787R1 pmr::generator

  • Merged C++23 Defect Reports:
  • P3107R5 #4821 Permit An Efficient Implementation Of ``

+ 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_merge with certain combinations of elements, projections, and comparisons. #4927
  • Fixed compiler errors in basic_ispanstream's constructor and basic_ispanstream::span() taking ReadOnlyRange&& with highly unusual types. #4938
  • Fixed compiler errors in the highly unusual scenario of calling basic_string and basic_string_view's find_first_of() family of member functions for program-defined "unicorn" character types. #4951
  • Fixed compiler errors when constructing optional from 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 operator operator>>(basic_istream&, bitset&) to use the stream's Traits to compare characters. #4970
  • Fixed basic_string and list's internal constructors to avoid disrupting highly unusual scenarios. #4976
  • Fixed compiler errors when constructing a packaged_task from a move-only function object. #4946
  • For Clang /fp:fast, fixed ` and to avoid emitting -Wnan-infinity-disabled warnings, except when numeric_limits::infinity()/quiet_NaN()/signaling_NaN()` are specifically called. #4990
  • Fixed ranges::copy_n to properly handle negative values of n (as a no-op) when activating our memmove() 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() and basic_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 to static_assert that the container elements are assignable from the range's reference type. #5086
  • Fixed compiler errors in various ranges algorithms when used with views::iota in 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

  • ranges algorithms now unwrap output iterators, avoiding unnecessary checking. #5015 #5027
  • Optimized bitset's streaming operators. #5008
  • Optimized the newline-printing…

Excerpt shown — open the source for the full document.