ReleaseMicrosoftMicrosoftpublished May 14, 2025seen 1d

microsoft/STL vs-2022-17.14

microsoft/STL

Open original ↗

Captured source

source ↗
published May 14, 2025seen 1dcaptured 13hhttp 200method plain

VS 2022 17.14

Repository: microsoft/STL

Tag: vs-2022-17.14

Published: 2025-05-14T23:36:30Z

Prerelease: no

Release notes:

  • Merged C++26 features:
  • P3323R1 #5213 Forbid atomic, Specify atomic_ref
  • Merged *partial* C++26 features:
  • P3471R4 #5274 Standard Library Hardening

+ Currently disabled by default. + This can be enabled (for any Standard mode) by defining _MSVC_STL_HARDENING to 1 project-wide. + As C++26 Contracts are not yet implemented, this defaults to calling `__fastfail()` for hardened precondition violations.

  • Related behavior enhancement:
  • Implemented "destructor tombstones" to mitigate use-after-free mistakes. #5318

+ Currently disabled by default. + This can be enabled by defining _MSVC_STL_DESTRUCTOR_TOMBSTONES to 1 project-wide.

  • Merged LWG issue resolutions:
  • LWG-3133 #5157 Modernizing numeric type requirements
  • LWG-3886 #5232 Monad mo' problems (in optional and expected)
  • LWG-3899 #5303 co_yielding elements of an lvalue generator is unnecessarily inefficient
  • LWG-3900 #5150 The allocator_arg_t overloads of generator::promise_type::operator new should not be constrained
  • LWG-3918 #5135 #5170 std::uninitialized_move/_n and guaranteed copy elision
  • LWG-3956 #5334 chrono::parse uses from_stream as a customization point
  • LWG-4014 #5132 LWG-3809 changes behavior of some existing std::subtract_with_carry_engine code
  • LWG-4027 #5221 *possibly-const-range* should prefer returning const R&
  • LWG-4084 #5151 std::fixed ignores std::uppercase
  • LWG-4112 #5152 *has-arrow* should require operator->() to be const-qualified
  • LWG-4119 #5220 generator::promise_type::yield_value(ranges::elements_of)'s nested generator may be ill-formed
  • LWG-4124 #5155 Cannot format zoned_time with resolution coarser than seconds
  • LWG-4135 #5131 The helper lambda of std::erase for list should specify return type as bool
  • LWG-4140 #5129 Useless default constructors for bit reference types
  • LWG-4144 #5201 Disallow unique_ptr
  • LWG-4169 #5128 std::atomic's default constructor should be constrained
  • LWG-4172 #5337 unique_lock self-move-assignment is broken
  • Merged *proposed* resolutions for LWG issues (not yet accepted for the C++ Working Draft, but we've chosen to implement this speculatively):
  • LWG-3424 #5232 optional::value_or should never return a *cv*-qualified type
  • Fixed bugs:
  • Fixed system_category().message() to prefer US English, followed by the system locale, with an ultimate fallback of `FormatMessageA`'s behavior for dwLanguageId == 0. #5104

+ This is consistent with generic_category().message() (which always returns US English in our implementation) and has the best chance of returning something intelligible instead of "unknown error" or "???". + This fixed a regression that was introduced by #2669 in VS 2022 17.3.

  • Fixed regex's behavior:

+ To reject bogus character class ranges like R"([\d-e])". #5158 + For negated character class escapes (\D for non-digits, \S for non-whitespace, \W for non-words) when matching against Unicode characters:

  • Outside square-bracket character classes. #5160
  • Inside square-bracket character classes (partially fixed). #5214

+ For character ranges in case-insensitive mode. #5164 + For the basic grammar to parse a single digit for backreferences. #5167 + For its internal buffers to grow geometrically. #5175 + For the special character . (dot). #5192 + For its constructor to accept (null, zero) arguments. #5211

  • Fixed filesystem::equivalent() to return correct results when shared folders are involved. #5130
  • Fixed chrono::weekday's constructor to avoid integer overflow for extreme inputs. #5156
  • Fixed push_range() for stack, queue, and priority_queue to forward the range to…

Excerpt shown — open the source for the full document.