Skip to content

Commit 66de82c

Browse files
committed
draft
1 parent ecb8263 commit 66de82c

File tree

1 file changed

+38
-43
lines changed

1 file changed

+38
-43
lines changed

docs/overview/msvc-conformance-improvements.md

Lines changed: 38 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "C++ conformance improvements in Microsoft C/C++ (MSVC)"
33
description: "Summary of conformance improvements in Microsoft C/C++ (MSVC)"
4-
ms.date: 10/31/2025
4+
ms.date: 11/03/2025
55
ms.service: "visual-cpp"
66
ms.subservice: "cpp-lang"
77
---
@@ -22,12 +22,20 @@ For changes in earlier versions of Visual Studio:
2222

2323
## <a name="msvc_14_50"></a> C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.50
2424

25-
Microsoft C/C++ in Visual Studio (MSVC) Build Tools v14.50 introduces significant C++ language updates, conformance improvements, and bug fixes. This version shipped first with Visual Studio 2026 version 18.0 and includes version 19.50 of the MSVC compiler.
25+
MSVC Build Tools v14.50 represents a significant advancement to the MSVC compiler, bringing substantial improvements in C++23 conformance, reliability, and correctness. The extensive bug fixes and enhancements make this release particularly valuable for large-scale C++ development projects.
26+
27+
This version shipped first with Visual Studio 2026 version 18.0 and includes version 19.50 of the MSVC compiler.
2628

27-
This document details the C++ language conformance improvements and compiler enhancements included in MSVC Build Tools v14.50. For more information about updates in the Standard Library, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is regularly updated.
29+
Key highlights include:
30+
- Advanced C++23 feature support including `auto(x)` decay-copy and `#warning` directive
31+
- Comprehensive `constexpr` improvements, particularly for virtual functions
32+
- Major stability improvements for C++ modules
33+
- Extensive reliability fixes reducing internal compiler errors
34+
- Enhanced C++/CLI support for managed code scenarios
35+
- The Microsoft C++ standard library (STL) no longer supports targeting Windows 7/Server 2008 R2, Windows 8/Server 2012, or Windows 8.1/Server 2012 R2.\
36+
- Windows 10/Server 2016 are the minimum supported operating systems.\
2837

29-
The Microsoft C++ standard library (STL) no longer supports targeting Windows 7 / Server 2008 R2, Windows 8 / Server 2012, or Windows 8.1 / Server 2012 R2.\
30-
Windows 10 / Server 2016 are the minimum supported operating systems.
38+
For more information about performance improvements, bug fixes, and conformance updates in the Standard Library, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is updated regularly.
3139

3240
## C++23 Features
3341

@@ -88,7 +96,6 @@ struct S
8896

8997
This change allows you to use the explicit object parameter syntax (deducing `this`) in assignment and comparison operators, providing more consistent syntax across different types of member functions.
9098

91-
9299
### P2266R1 : Simpler implicit move
93100

94101
The introduction of [P2266R1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2266r1.html) may cause code that was previously treated as an lvalue to be treated as an xvalue or a prvalue. For example:
@@ -111,10 +118,8 @@ void g()
111118
}
112119
```
113120
114-
In C++20, and earlier, this code would have compiled because even though the type of `t` is `S&&` the use of `t` in `return t` is treated as a glvalue and so it can bind to the return type.
115-
116-
With C++23, `t` is treated as an xvalue and so it can't bind to an lvalue reference.
117-
121+
In C++20, and earlier, this code would have compiled because even though the type of `t` is `S&&` the use of `t` in `return t` is treated as a glvalue and so it can bind to the return type.\
122+
With C++23, `t` is treated as an xvalue and so it can't bind to an lvalue reference.\
118123
One fix is to change to the return type of the function from `T&` to `T&&` but this may affect code that calls this function. An alternative is to use the feature test macro that is associated with this change. For example:
119124
120125
```cpp
@@ -152,25 +157,6 @@ void check(int const (&param)[3])
152157
153158
This improvement allows more code to be evaluated at compile time, particularly when dealing with function parameters in template contexts.
154159
155-
## Smaller Conformance Updates
156-
157-
MSVC Build Tools v14.50 includes numerous smaller conformance improvements that enhance C++ standard compliance:
158-
159-
- [CWG2635](https://cplusplus.github.io/CWG/issues/2635): Constrained structured bindings support
160-
- [CWG2465](https://cplusplus.github.io/CWG/issues/2465): Coroutine parameters passed to promise constructor improvements
161-
- [CWG2496](https://cplusplus.github.io/CWG/issues/2496): Ref-qualifiers and virtual overriding corrections
162-
- [CWG2506](https://cplusplus.github.io/CWG/issues/2506): Structured bindings and array cv-qualifiers fixes
163-
- [CWG2507](https://cplusplus.github.io/CWG/issues/2507): Default arguments for `operator[]` support
164-
- [CWG2585](https://cplusplus.github.io/CWG/issues/2585): Behavior alignment with standard requirements
165-
- [CWG2521](https://cplusplus.github.io/CWG/issues/2521): Deprecation of 'operator string-literal identifier'
166-
- [CWG2528](https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2528): Relaxed conversion rules for the spaceship operator
167-
- [P2360R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2360r0.html): Extended init-statement definition to allow alias-declarations
168-
- [P2290R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2290r3.pdf): C++23 hexadecimal/octal delimited escape sequence support in string literals
169-
- [P2797R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2797r0.html): Resolution for CWG2692 regarding static and explicit object member functions with the same parameter-type-lists
170-
- [P2266R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2266r3.html): Simpler implicit move semantics
171-
172-
For more information about compiler improvements and bug fixes in MSVC Build Tools v14.50, see [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/)
173-
174160
## Conformance Enhancements
175161
176162
Improved adherence to C++ standards:
@@ -189,11 +175,30 @@ Improved adherence to C++ standards:
189175
### C++20 and C++23 Features
190176
191177
- Enhanced [multidimensional operator[] support](https://developercommunity.visualstudio.com/t/Multidimensional-operator-with-Wall-r/10876026)
192-
- Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731)
178+
- Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731)-
179+
180+
### Smaller Conformance Updates
181+
182+
MSVC Build Tools v14.50 includes numerous smaller conformance improvements that enhance C++ standard compliance:
183+
184+
- [CWG2635](https://cplusplus.github.io/CWG/issues/2635): Constrained structured bindings support
185+
- [CWG2465](https://cplusplus.github.io/CWG/issues/2465): Coroutine parameters passed to promise constructor improvements
186+
- [CWG2496](https://cplusplus.github.io/CWG/issues/2496): Ref-qualifiers and virtual overriding corrections
187+
- [CWG2506](https://cplusplus.github.io/CWG/issues/2506): Structured bindings and array cv-qualifiers fixes
188+
- [CWG2507](https://cplusplus.github.io/CWG/issues/2507): Default arguments for `operator[]` support
189+
- [CWG2585](https://cplusplus.github.io/CWG/issues/2585): Behavior alignment with standard requirements
190+
- [CWG2521](https://cplusplus.github.io/CWG/issues/2521): Deprecation of 'operator string-literal identifier'
191+
- [CWG2528](https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2528): Relaxed conversion rules for the spaceship operator
192+
- [P2360R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2360r0.html): Extended init-statement definition to allow alias-declarations
193+
- [P2290R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2290r3.pdf): C++23 hexadecimal/octal delimited escape sequence support in string literals
194+
- [P2797R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2797r0.html): Resolution for CWG2692 regarding static and explicit object member functions with the same parameter-type-lists
195+
- [P2266R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2266r3.html): Simpler implicit move semantics
193196
194197
## Bug fixes
195198
196-
Bug fixes for C++ Modules, `constexpr`, and other fixes were made in v14.50. For a detailed list of bug fixes, see [Compiler Improvements in v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#compiler-improvements-in-v14.50)
199+
Bug fixes for C++ Modules, `constexpr`, and other fixes were made in v14.50.
200+
201+
For a detailed list of bug fixes, see [Compiler Improvements in v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#compiler-improvements-in-v14.50)
197202
198203
**Encoding of certain non-type template arguments corrected**
199204
@@ -256,23 +261,13 @@ When upgrading to MSVC Build Tools v14.50, consider the following potential brea
256261
- `typeof` behavior changes may affect existing code
257262
- Review preprocessor usage for new `__VA_OPT__` availability
258263

259-
## Conclusion
260-
261-
MSVC Build Tools v14.50 represents a significant advancement to the MSVC compiler, bringing substantial improvements in C++23 conformance, reliability, and correctness. The extensive bug fixes and enhancements make this release particularly valuable for large-scale C++ development projects.
262-
263-
Key highlights include:
264-
- Advanced C++23 feature support including `auto(x)` decay-copy and `#warning` directive
265-
- Comprehensive `constexpr` improvements, particularly for virtual functions
266-
- Major stability improvements for C++ modules
267-
- Extensive reliability fixes reducing internal compiler errors
268-
- Enhanced C++/CLI support for managed code scenarios
269264

270265
For the latest updates and to provide feedback, please visit the [Visual Studio Developer Community](https://developercommunity.visualstudio.com/) or contact the team at [[email protected]](mailto:[email protected]). Follow us on Twitter [@visualc](https://twitter.com/visualc) or BlueSky [@msftcpp.bsky.social](https://bsky.app/profile/msftcpp.bsky.social).
271266

272267
If you encounter problems with MSVC in Visual Studio 2026, please let us know via the [Report a Problem](how-to-report-a-problem-with-the-visual-cpp-toolset.md) option, either from the installer or the Visual Studio IDE itself.
273268

274269
## See also
275270

276-
[Microsoft C/C++ language conformance](visual-cpp-language-conformance.md)
277-
[What's new for C++ in Visual Studio](what-s-new-for-visual-cpp-in-visual-studio.md)
271+
[Microsoft C/C++ language conformance](visual-cpp-language-conformance.md)\
272+
[What's new for C++ in Visual Studio](what-s-new-for-visual-cpp-in-visual-studio.md)\
278273
[C++ conformance improvements in Visual Studio 2022](cpp-conformance-improvements.md)

0 commit comments

Comments
 (0)