VS 2019 16.5
·
2704 commits
to main
since this release
- Hello, world!
- Announced this repo at CppCon 2019.
- Added initial documentation: readme, license, and roadmap.
- Added initial CMake build scripts for Desktop-only msvcp. #5 #80 #98 #101
- Investigated continuous integration options, like GitHub Actions or Azure Pipelines. (Chose Azure Pipelines.)
- Automated builds running in PRs. #114
- Investigated test harness solutions, either building our own to more closely match the internal system in a reasonable way, or using libcxx's
lit. (Chose to uselit.) - Began auditing test case source files from the
stdandtr1test suites. - Implemented Custom Autolinks in this repo.
- Merged C++20 features:
- P0325R4 #135
to_array() - P0340R3 #284 SFINAE-Friendly
underlying_type - P0356R5 #158
bind_front() - P0439R0 #124
enum class memory_order - P0553R4 #310
<bit>Rotating And Counting Functions - P0556R3 #310
<bit>ispow2(),ceil2(),floor2(),log2p1()bit_length()- P1355R2 Narrow Contract For
ceil2()
- P1355R2 Narrow Contract For
- P0595R2 #353
is_constant_evaluated() - P0631R8 #261
<numbers>Math Constants - P0655R1 #201
visit<R>() - P0738R2 #246
istream_iteratorCleanup - P0767R1 #179 Deprecating
is_pod - P0966R1 #176
string::reserve()Should Not Shrink - P1209R0 #236
erase_if(),erase() - P1227R2 #130 Signed
std::ssize() - P1357R1 #127
is_bounded_array,is_unbounded_array - P1612R1 #305 Relocating
endianTo<bit> - P1690R1 #341 Refining Heterogeneous Lookup For Unordered Containers
- P1902R1 #287 #353 Missing Feature-Test Macros 2017-2019
- P1959R0 #381 Removing
weak_equalityAndstrong_equality
- P0325R4 #135
- Merged partial C++20 features:
- Merged LWG issue resolutions:
- LWG-2899 #193
is_(nothrow_)move_constructibleandtuple,optional, andunique_ptr - LWG-3158 #195
tuple(allocator_arg_t, const Alloc&)should be conditionally explicit - LWG-3199 #353
istream >> bitset<0>fails - LWG-3257 #353 Missing feature testing macro update from P0858
- LWG-3266 #353
to_chars(bool)should be deleted
- LWG-2899 #193
- Merged proposed resolutions for LWG issues (not yet accepted for the C++ Working Draft, but we've chosen to implement this speculatively):
- Fixed bugs:
- Restored
swap(unique_ptr&, unique_ptr&)which was mistakenly removed. #170 - When erasing an empty range in a
vector, avoided self-move-assigning all elements. #228 - Removed a
noexceptthat was incorrectly applied to an allocating helper function inlist. #77 valarraynow uses argument-dependent lookup when callingsin(),cos(),pow(),sqrt(), etc. as required by the Standard. #286- Fixed
<filesystem>linker errors for UWP developers. #356 - Changed the return type of
locale's assignment operator toconst locale&as (perhaps surprisingly) required by the Standard. #324 - Fixed
regex_token_iteratorto return correct results. #131 - Non-member
begin()andend()now takebasic_string_viewby value as required by the Standard. #119 - Fixed
list::splice()to work correctly when splicing exactly half of onelistinto another. #129
- Restored
- Improved performance:
- Fixed a codegen size regression in
atomic<integral>andatomic<pointer>. #227 - Activated x64 FrameHandler4 exception handling, reducing the size of
msvcp140.dllfrom 588 KB to 528 KB. #154 - Reduced the stack space consumption of
listandforward_listinsertion. #366 - Improved the performance of 64-bit
atomicloads on x86. #87
- Fixed a codegen size regression in
- Improved throughput:
- Used
if constexprinstead of tag dispatch in<any>. #173
- Used
- Enhanced behavior:
- Improved the error message for
function<Ret (Args) noexcept>. #350 anynow supports over-aligned types. #173- Improved the messages that are emitted when including newer headers in older Standard modes. #252
- Strengthened
noexceptforexchange(). #364 std::functionnow avoids usingtypeid(void)in our_HAS_STATIC_RTTI=0mode, for compatibility with Clang's-fno-rttimode. #375- Added an error message explaining that the
<experimental/coroutine>,<experimental/generator>, and<experimental/resumable>headers aren't supported with Clang. #136
- Improved the error message for
- Code cleanups:
- Removed unnecessary
publickeywords instructinheritance. #219 - Used
iter[idx]for clarity in<algorithm>. #289 (Note that this was reverted in VS 2019 16.6 by #464.) - Fixed typos in comments and error messages. #96
- Marked more
virtualmember functions asoverride. #302 - Fused files together. #220 #374
- Consistently used the modern
int = 0SFINAE technique. #226 #244 #328 - Removed compiler bug workarounds. #175 #301 #372
- Various cleanups (described in detail in the PRs, not repeated here). #168 #221 #269 #320 #373
- Removed unnecessary
- Improved documentation:
- Added a comment explaining part of
invoke()'s implementation. #368
- Added a comment explaining part of
- Infrastructure improvements:
- Updated
_MSVC_STL_UPDATE. #253 #358