New
Unclaimed project
Are you a maintainer of STL? Claim this project to take control of your public changelog and roadmap.
<print>std::print More Types Faster With Less Memorydeque::shrink_to_fit(). #4955
unique_ptrs (storing fancy pointers) from unspeakably evil relics of the forgotten past. #4922ranges::inplace_merge with certain combinations of elements, projections, and comparisons. #4927basic_ispanstream's constructor and basic_ispanstream::span() taking ReadOnlyRange&& with highly unusual types. #4938basic_string and basic_string_view's find_first_of() family of member functions for program-defined "unicorn" character types. #4951optional from highly unusual types. #4961vector::emplace_back()) to avoid emitting "warning C5046: Symbol involving type with internal linkage not defined" for highly unusual types. #4963 #4980
list/forward_list::remove/remove_if/unique(). #4975variant's converting constructor and converting assignment operator for certain types. #4966bitset's streaming operator operator>>(basic_istream<CharT, Traits>&, bitset<N>&) to use the stream's Traits to compare characters. #4970basic_string and list's internal constructors to avoid disrupting highly unusual scenarios. #4976packaged_task from a move-only function object. #4946/fp:fast, fixed <cmath> and <limits> to avoid emitting -Wnan-infinity-disabled warnings, except when numeric_limits::infinity()/quiet_NaN()/signaling_NaN() are specifically called. #4990ranges::copy_n to properly handle negative values of n (as a no-op) when activating our memmove() optimization. #5046
memmove() optimization (used by copy_n(), ranges::copy_n, and more) to avoid emitting compiler warnings with certain iterators.filesystem::directory_entry::refresh() to avoid sporadically failing for nonexistent network paths on Windows 11 24H2. #5077basic_istream::get() and basic_istream::getline() to never write a null terminator into zero-sized buffers, and to always write a null terminator otherwise. #5073assign_range() for sequence containers to static_assert that the container elements are assignable from the range's reference type. #5086views::iota in certain scenarios. #5091basic_string::find_first_of(). #4744basic_string::find_last_of(). #4934basic_string::find() for a substring. #5048basic_string::rfind() for a substring. #5057basic_string::rfind() for a single character. #5087search(), ranges::search, and default_searcher, for 1-byte and 2-byte elements. #4745find_end() and ranges::find_end, for 1-byte and 2-byte elements. #4943 #5041 #5042bitset's constructors from strings. #4839remove() and ranges::remove. #4987ranges algorithms now unwrap output iterators, avoiding unnecessary checking. #5015 #5027bitset's streaming operators. #5008println(FILE*), println(ostream&), and nullary println(). #4672array and vector's spaceship comparison operators to take advantage of the vectorized implementation of lexicographical_compare_three_way(). #5078filesystem::symlink_status() by avoiding unnecessary Windows API calls. #5071<ostream> (which drags in <format>) unless the Standard requires it. #4936<queue>, <stack>, <stacktrace>, and <thread> by not including all of <format>. #5003system_clock, high_resolution_clock, and chrono_literals from a commonly-included internal header to <chrono>. #5105
chrono types like system_clock or UDLs like 1729ms, you need to include <chrono> specifically, instead of assuming that headers like <thread> will drag it in.pair constructor to be private. #4979memcpy() call in the filesystem implementation (that was intentionally performing a read overrun) with two cromulent memcpy() calls. #4933system_clock::time_point. #5005vector machinery to use scope guards instead of throw;, making debugging easier when exceptions are thrown. #4977regex_error::what()'s message for regex_constants::error_badbrace. #5025optional<T>::swap()'s static_assert messages when T isn't both move constructible and swappable. #5065locale::id's non-Standard constructor from size_t and implicit conversion operator to size_t. #5067
mutex assertions to distinguish "unlock of unowned mutex" from "unlock of mutex not owned by the current thread". #5099timed_mutex test. #4973psutil is installed, the test harness now supports a priority parameter, defaulting to idle. #5032swap_ranges() benchmark by adding allocators to control alignment. #5043mismatch(), lexicographical_compare(), and lexicographical_compare_three_way() into a separate test. #5063packaged_task's defaulted move constructor and move assignment operator as noexcept. #4940tuple-like and pair-like concepts. #4983if constexpr to simplify ~~eldritch horrors from beyond spacetime~~ locale facets. #5001basic_string::find_first_not_of()/find_last_not_of(). #5006bitset::to_string(). #5013list's move assignment operator. #5024