VS 2022 17.5
StephanTLavavej
released this
09 Mar 05:27
·
899 commits
to main
since this release
- Merged C++23 features:
- P2322R6 #3099
ranges::fold_left
,ranges::fold_right
, etc. - P2465R3 #3108 Standard Library Modules
std
Andstd.compat
- Initially supported for MSVC only; see tracking issue #1694 for lists of known compiler bugs and upcoming fixes.
- Build system support is a work in progress; currently, build systems must be manually taught to compile
std.ixx
so you can referencestd.ifc
and linkstd.obj
. (Similarly for buildingstd.compat.ixx
intostd.compat.ifc
andstd.compat.obj
.) - IntelliSense support is a work in progress; STL test coverage is not yet enabled.
- Will be supported for Clang after compiler support for modules is available; see Clang's C++20 implementation status.
- P2508R1 #3074
basic_format_string
,format_string
,wformat_string
- P2322R6 #3099
- Merged partial C++23 features:
- P2278R4
cbegin
Should Always Return A Constant Iterator:- The "Iterators" section, including
basic_const_iterator
,make_const_iterator()
, andmake_const_sentinel()
. #3043
- The "Iterators" section, including
- P2321R2
zip
:views::zip
. #3035- Note:
views::zip_transform
,views::adjacent
, andviews::adjacent_transform
are the parts that remain to be implemented.
- P2278R4
- Merged LWG issue resolutions:
- Fixed bugs:
- Fixed compiler warnings when using Standard Library Header Units. #3069
- Removed a non-Standard member function
locale::c_str()
. #3088 - Fixed narrowing warnings when calling
piecewise_constant_distribution<float>::densities()
andpiecewise_linear_distribution<float>::densities()
. #3107 - Fixed compiler errors when calling
ranges::is_permutation
with predicates that return highly unusual boolean-testable types. #3113 - Fixed compiler errors when building the Standard Library Modules with static RTTI disabled. #3115
- Now, building
std.ixx
with/GR- /D_HAS_STATIC_RTTI=0
will succeed, andstd::any
will simply be unavailable (as it inherently requires static RTTI). - Additionally, including
<any>
with static RTTI disabled will emit a warning message but not an error, and the feature-test macro__cpp_lib_any
will indicate (by its absence) that the feature is unavailable.
- Now, building
- Fixed compiler errors in
reference_wrapper
,thread
, andvariant
involving incomplete types. #3101 #3148 - When
chrono::time_zone::get_info()
throws an exception, fixed it to reportGetLastError()
as intended, instead of"The operation completed successfully."
#3122 - Fixed incorrect results returned by
ellint_2()
. #3077 - Fixed
error_category
's default constructor to beconstexpr
. #3139 #3176 - Fixed all headers to avoid emitting the off-by-default "warning C5262: implicit fall-through occurs here; are you missing a
break
statement? Use[[fallthrough]]
when abreak
statement is intentionally omitted betweencase
s". #3162 - Fixed compiler errors in certain
<ranges>
scenarios by properly constrainingmovable-box
's copy constructors. #3171
- Improved performance:
- Added support for unwrapping to
move_sentinel
. #3098 - Improved the performance of
uniform_int_distribution
by implementing Daniel Lemire's algorithm Fast Random Integer Generation in an Interval. #3012 - Optimized
gcd()
to avoid a redundant shift. #3127 - Optimized
locale::classic()
for a 10x speedup (times, not percent). #3048 - Added an attribute to
move()
,forward()
,move_if_noexcept()
, andforward_like()
that will allow the MSVC compiler to intrinsically implement them without emitting function calls. #3182
- Added support for unwrapping to
- Improved throughput:
- Enhanced behavior:
- Clarified
get_future()
's[[nodiscard("message")]]
. #3068 - The internal headers
<xatomic.h>
,<xbit_ops.h>
, and<xerrc.h>
are now core headers. #3116 - Improved
<format>
's compiler error messages for unformattable types. #3080
- Clarified
- Improved test coverage:
- Added test coverage for
<variant>
visit()
invoking pointers to members. #3070 - Expanded test coverage for
forward_like()
. #3072 - Updated test coverage for
views::as_rvalue
. #3089 - Expanded test coverage for
bind_front()
andbind_back()
. #3117 - Updated our LLVM submodule reference, including new tests, and updates to the
any
/optional
/variant
shared test code. #2976 - Fixed bogus test code discovered by Clang 15. #3135
- Fixed the off-by-default "exhaustive" mode of the parallel
is_partitioned()
test. #3174
- Added test coverage for
- Code cleanups:
- Various cleanups (described in detail in the PRs, not repeated here). #3082 #3083 #3084 #3085 #3086 #3090 #3091 #3092 #3093 #3177 #3178
- Improved Python scripts. #3123
- Removed compiler bug workarounds. #3155
- Moved
<atomic>
implementation details, preparing for later changes. #3124 - Removed unnecessary partial specializations of
common_type
for the STL's internal 128-bit integer-class types. #3153
- Infrastructure improvements:
- Updated
_MSVC_STL_UPDATE
. #3073 #3147