You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/overview/msvc-conformance-improvements.md
+38-43Lines changed: 38 additions & 43 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
---
2
2
title: "C++ conformance improvements in Microsoft C/C++ (MSVC)"
3
3
description: "Summary of conformance improvements in Microsoft C/C++ (MSVC)"
4
-
ms.date: 10/31/2025
4
+
ms.date: 11/03/2025
5
5
ms.service: "visual-cpp"
6
6
ms.subservice: "cpp-lang"
7
7
---
@@ -22,12 +22,20 @@ For changes in earlier versions of Visual Studio:
22
22
23
23
## <aname="msvc_14_50"></a> C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.50
24
24
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.
26
28
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
- 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.\
28
37
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.
31
39
32
40
## C++23 Features
33
41
@@ -88,7 +96,6 @@ struct S
88
96
89
97
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.
90
98
91
-
92
99
### P2266R1 : Simpler implicit move
93
100
94
101
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()
111
118
}
112
119
```
113
120
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.\
118
123
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:
This improvement allows more code to be evaluated at compile time, particularly when dealing with function parameters in template contexts.
154
159
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
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
-
174
160
## Conformance Enhancements
175
161
176
162
Improved adherence to C++ standards:
@@ -189,11 +175,30 @@ Improved adherence to C++ standards:
- 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
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)
197
202
198
203
**Encoding of certain non-type template arguments corrected**
199
204
@@ -256,23 +261,13 @@ When upgrading to MSVC Build Tools v14.50, consider the following potential brea
256
261
-`typeof` behavior changes may affect existing code
257
262
- Review preprocessor usage for new `__VA_OPT__` availability
258
263
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
- Enhanced C++/CLI support for managed code scenarios
269
264
270
265
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).
271
266
272
267
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.
273
268
274
269
## See also
275
270
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)\
278
273
[C++ conformance improvements in Visual Studio 2022](cpp-conformance-improvements.md)
0 commit comments