microsoft/STL vs-2022-17.14
microsoft/STL
Captured source
source ↗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, Specifyatomic_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
optionalandexpected) - LWG-3899 #5303
co_yielding elements of an lvaluegeneratoris unnecessarily inefficient - LWG-3900 #5150 The
allocator_arg_toverloads ofgenerator::promise_type::operator newshould not be constrained - LWG-3918 #5135 #5170
std::uninitialized_move/_nand guaranteed copy elision - LWG-3956 #5334
chrono::parseusesfrom_streamas a customization point - LWG-4014 #5132 LWG-3809 changes behavior of some existing
std::subtract_with_carry_enginecode - LWG-4027 #5221 *
possibly-const-range* should prefer returningconst R& - LWG-4084 #5151
std::fixedignoresstd::uppercase - LWG-4112 #5152 *
has-arrow* should requireoperator->()to beconst-qualified - LWG-4119 #5220
generator::promise_type::yield_value(ranges::elements_of)'s nestedgeneratormay be ill-formed - LWG-4124 #5155 Cannot format
zoned_timewith resolution coarser than seconds - LWG-4135 #5131 The helper lambda of
std::eraseforlistshould specify return type asbool - 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_lockself-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_orshould 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 fordwLanguageId == 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
Excerpt shown — open the source for the full document.