New
Unclaimed project
Are you a maintainer of STL? Claim this project to take control of your public changelog and roadmap.
Changelog
MSVC's implementation of the C++ Standard Library.
Last updated 19 days ago
char to sequences of wchar_tstd::basic_format_context be default-constructible/copyable/movable?compatible-joinable-ranges is underconstrainedviews::as_rvalue should reject non-input rangesviews::iota(views::iota(0)) should be rejectedviews::adjacent<0> should reject non-forward rangesbasic_format_args should not be default-constructible/W4 /analyze clean, but does not yet attempt to be clean with respect to all additional static analysis rulesets.atomic_ref::is_lock_free() on x64 to return true for 1, 2, 4, 8, and 16 bytes only. #4729uniform_real_distribution<RealType>{min, max} to stay within the inclusive-exclusive range [min, max) and never generate the max value exactly. #4740filesystem::weakly_canonical() to avoid failing on Windows 11 24H2 in certain scenarios. #4844condition_variable_any::wait_for() to consistently use steady_clock. #4755ranges::view_interface. #4835move_iterator to use the updated name of its internal data member. #4836
expected to conditionally delete its copy constructor and copy assignment operator as depicted in the Standard, which affects overload resolution in unusual scenarios. #4837time_put/put_time() to avoid crashing for:
ranges::inplace_merge and ranges::minmax in unusual scenarios. #4841array::size() and <mdspan> static analysis annotations, fixing warnings in some scenarios. #4856lexicographical_compare_three_way() to enforce the Standard's mandate that the comparison returns a comparison category type. #4878inclusive_scan(), exclusive_scan(), transform_inclusive_scan(), and transform_exclusive_scan() when the intermediate and output types are different. #4701ranges::min, ranges::max, and ranges::minmax to return correct results for negative zeros. #4734constexpr variant scenarios by adding a compiler bug workaround. #4903<random> machinery (e.g. generate_canonical(), uniform_real_distribution) via Standard Library Modules or Standard Library Header Units by adding compiler bug workarounds. #4906<format> machinery in user-defined modules by adding compiler bug workarounds. #4919<format> to avoid crashing when formatting floating-point values with large precisions combined with the # (alternate form) or L (locale-specific form) options. #4907condition_variable and condition_variable_any, improving their performance and simplifying their implementation. #4720
condition_variable, timed_mutex, and recursive_timed_mutex are now trivially destructible.search(), find_end(), and their ranges forms by removing calls to memcmp() that were surprisingly harmful. #4654 #4753popcount() by using new compiler intrinsics. #4695 #4733ranges::min, ranges::max, and ranges::minmax for certain iterator types. #4775/arch:SSE2 (which is the default) instead of /arch:IA32. #4741
/arch (x86) on Microsoft Learn.<cmath>'s floating-point comparison functions for mixed types. #4648atomic_ref<16 bytes> now always uses the cmpxchg16b instruction. #4751bitset to a basic_ostream now avoids dynamically allocating memory. #4818<atomic>. #4870char_traits<wchar_t/char16_t>::compare/find/length, find, and ranges::find to call wmemcmp/wmemchr/wcslen when possible, which will improve performance after a future UCRT header update. #4873 #4894strings and string_views. #4904<queue> and <stack> throughput by dragging in fewer headers. #4707variant's Converting Constructor/Assignment is now unconditionally active (i.e. in C++17 mode and above), instead of being restricted to C++20 mode and above. #4713
map/set nodes to use scope guards instead of throw;, making debugging easier when exceptions are thrown. #4749gcd() and lcm() for precondition violations. #4776min, max, clamp, ranges::min, ranges::max, and ranges::clamp, allowing MSVC code analysis and Clang -Wdangling to detect dangling references in improper usage. #4838vector::pop_back() to be guarded by _CONTAINER_DEBUG_LEVEL. #4849views::iota and views::repeat to provide better IDE guidance. #4908operator new and operator delete overloads in both release and debug mode. #4916<any>, <optional>, and <variant>. #4713std::views::repeat does not decay the argument". #4748bitset::to_string(). #4817libcxx test suite. #4721 #4732 #4911ranges::ends_with's Returns misses difference casting". #4897rand(), which is considered harmful. #4921GetCurrentPackageId. #4742ranges::equal compares sizes. #4864/Zc:preprocessor to build the STL with the conformant preprocessor. #4886