|
1 | 1 | --- |
2 | 2 | title: "Microsoft C/C++ language conformance" |
3 | 3 | description: "Microsoft C and C++ conformance updates by Visual Studio version." |
4 | | -ms.date: 11/04/2025 |
| 4 | +ms.date: 11/10/2025 |
5 | 5 | ms.service: "visual-cpp" |
6 | 6 | ms.subservice: "cpp-lang" |
7 | 7 | --- |
@@ -174,55 +174,60 @@ For details on conformance improvements, see [C++ conformance improvements in Vi |
174 | 174 | |  [`P1073R3 Immediate functions`](https://wg21.link/P1073R3) | VS 2019 16.10 <sup>[20](#note_20)</sup> | |
175 | 175 | |  [`P1143R2 constinit`](https://wg21.link/P1143R2) | VS 2019 16.10 <sup>[20](#note_20)</sup> | |
176 | 176 | |  [`P1353R0 Missing feature-test macros`](https://wg21.link/P1353R0) | VS 2019 16.10 <sup>[20](#note_20)</sup> | |
177 | | -|  [`P0735R1 Interaction of memory_order_consume with release sequences`](https://wg21.link/P0735R1) | N/A | |
178 | | -|  [`P1236R1 Signed integers are two's complement`](https://wg21.link/P1236R1) | N/A | |
| 177 | +|  [`P0735R1 Interaction of memory_order_consume with release sequences`](https://wg21.link/P0735R1) | VS 2022 v17.14 | |
| 178 | +|  [`P1236R1 Signed integers are two's complement`](https://wg21.link/P1236R1) | VS 2022 v17.14 | |
179 | 179 | | **C++23 Core language features** | **Supported** | |
180 | | -|  [`P0330R8 Literal Suffix for (signed) size_t`](https://wg21.link/p0330r8) | no | |
181 | | -|  [`P0847R7 Deducing this`](https://wg21.link/p0847r7) | no | |
182 | | -|  [`P0849R8 auto(x): decay-copy in the language`](https://wg21.link/p0849r8) | no | |
183 | | -|  [`P1102R2 Down with ()!`](https://wg21.link/p1102r2) | no | |
184 | | -|  [`P1169R4 static operator()`](https://wg21.link/p1169r4) | no | |
185 | | -|  [`P1401R5 Narrowing contextual conversions to bool`](https://wg21.link/p1401r5) | no | |
186 | | -|  [`P1467R9 Extended floating-point types and standard names`](https://wg21.link/p1467r9) | no | |
| 180 | +|  [`P0330R8 Literal Suffix for (signed) size_t`](https://wg21.link/p0330r8) | VS 2022 17.13 <sup>[23](#note_23)</sup> | |
| 181 | +|  [`P0847R7 Deducing this`](https://wg21.link/p0847r7) | VS 2022 17.13 <sup>[23](#note_23)</sup> | |
| 182 | +|  [`P0849R8 auto(x): decay-copy in the language`](https://wg21.link/p0849r8) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
| 183 | +|  [`P1102R2 Down with ()!`](https://wg21.link/p1102r2) | VS 2022 17.14 <sup>[23](#note_23)</sup> | |
| 184 | +|  [`P1169R4 static operator()`](https://wg21.link/p1169r4) | VS 2022 17.14 <sup>[23](#note_23)</sup> | |
| 185 | +|  [`P1401R5 Narrowing contextual conversions to bool`](https://wg21.link/p1401r5) | VS 2022 17.14 <sup>[23](#note_23)</sup> | |
| 186 | +|  [`P1467R9 Extended floating-point types and standard names`](https://wg21.link/p1467r9) | No <sup>[U](#note_U)</sup> | |
187 | 187 | |  [`P1774R8 Portable assumptions`](https://wg21.link/p1774r8) | no | |
188 | | -|  [`P1787R6 Declarations and where to find them`](https://wg21.link/p1787r6) | no | |
| 188 | +|  [`P1787R6 Declarations and where to find them`](https://wg21.link/p1787r6) | No change required | |
189 | 189 | |  [`P1847R4 Make declaration order layout mandated`](https://wg21.link/p1847r4) | VS 2022 17.0 <sup>[23](#note_23)</sup> | |
190 | | -|  [`P1938R3 if consteval`](https://wg21.link/p1938r3) | no | |
191 | | -|  [`P1949R7 C++ Identifier Syntax using Unicode Standard Annex 31`](https://wg21.link/p1949r7) | no | |
| 190 | +|  [`P1938R3 if consteval`](https://wg21.link/p1938r3) | VS 2022 17.14 <sup>[23](#note_23)</sup> | |
| 191 | +|  [`P1949R7 C++ Identifier Syntax using Unicode Standard Annex 31`](https://wg21.link/p1949r7) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
192 | 192 | |  [`P2029R4 Proposed resolution for core issues 411, 1656, and 2333; numeric and universal character escapes in character and string literals`](https://wg21.link/p2029r4) | no | |
193 | | -|  [`P2036R3 Change scope of lambda trailing-return-type`](https://wg21.link/p2036r3) | no | |
| 193 | +|  [`P2036R3 Change scope of lambda trailing-return-type`](https://wg21.link/p2036r3) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
194 | 194 | |  [`P2071R2 Named universal character escapes`](https://wg21.link/p2071r2) | no | |
195 | | -|  [`P2128R6 Multidimensional subscript operator`](https://wg21.link/p2128r6) | no | |
196 | | -|  [`P2156R1 Allow Duplicate Attributes`](https://wg21.link/p2156r1) | no | |
197 | | -|  [`P2173R1 Attributes on Lambda-Expressions`](https://wg21.link/p2173r1) | no | |
| 195 | +|  [`P2128R6 Multidimensional subscript operator`](https://wg21.link/p2128r6) | VS 2022 17.12 <sup>[23](#note_23)</sup> | |
| 196 | +|  [`P2156R1 Allow Duplicate Attributes`](https://wg21.link/p2156r1) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
| 197 | +|  [`P2173R1 Attributes on Lambda-Expressions`](https://wg21.link/p2173r1) | VS 2022 17.14 <sup>[23](#note_23)</sup> | |
198 | 198 | |  [`P2186R2 Remove Garbage Collection Support`](https://wg21.link/p2186r2) | VS 2022 17.0 <sup>[23](#note_23)</sup> | |
199 | | -|  [`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | no | |
200 | | -|  [`P2223R2 Trimming whitespaces before line splicing`](https://wg21.link/p2223r2) | no | |
201 | | -|  [`P2242R3 Non-literal variables (and labels and gotos) in constexpr functions`](https://wg21.link/p2242r3) | no | |
| 199 | +|  [`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | VS 2022 17.14 | |
| 200 | +|  [`P2223R2 Trimming whitespaces before line splicing`](https://wg21.link/p2223r2) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
| 201 | +|  [`P2242R3 Non-literal variables (and labels and gotos) in constexpr functions`](https://wg21.link/p2242r3) | VS 2022 17.14 <sup>[23](#note_23)</sup> | |
202 | 202 | |  [`P2246R1 Character encoding of diagnostic text`](https://wg21.link/p2246r1) | VS 2022 17.0 <sup>[23](#note_23)</sup> | |
203 | | -|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | no | |
204 | | -|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | no | |
205 | | -|  [`P2295R6 Support for UTF-8 as a portable source file encoding`](https://wg21.link/p2295r6) | no | |
| 203 | +|  [`P2266R3 Simpler implicit move`](https://wg21.link/p2266r3) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
| 204 | +|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
| 205 | +|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
| 206 | +|  [`P2295R6 Support for UTF-8 as a portable source file encoding`](https://wg21.link/p2295r6) | <sup>[V](#note_V)</sup> | |
206 | 207 | |  [`P2314R4 Character sets and encodings`](https://wg21.link/p2314r4) | no | |
207 | 208 | |  [`P2316R2 Consistent character literal encoding`](https://wg21.link/p2316r2) | VS 2022 17.0 <sup>[23](#note_23)</sup> | |
208 | 209 | |  [`P2324R2 Labels at the end of compound statements (C compatibility)`](https://wg21.link/p2324r2) | no | |
209 | | -|  [`P2327R1 De-deprecating volatile compound operations`](https://wg21.link/p2327r1) | no | |
210 | | -|  [`P2334R1 preprocessing directives elifdef and elifndef`](https://wg21.link/p2334r1) | no | |
211 | | -|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | no | |
| 210 | +|  [`P2327R1 De-deprecating volatile compound operations`](https://wg21.link/p2327r1) | VS 2022 v17.14 | |
| 211 | +|  [`P2334R1 preprocessing directives elifdef and elifndef`](https://wg21.link/p2334r1) | VS 2022 17.10 <sup>[23](#note_23)</sup> | |
| 212 | +|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
212 | 213 | |  [`P2362R3 Remove non-encodable wide character literals and multicharacter wide character literals`](https://wg21.link/p2362r3) | no | |
213 | | -|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | no | |
| 214 | +|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
214 | 215 | |  [`P2448R2 Relaxing some constexpr restrictions`](https://wg21.link/p2448r2) | no | |
215 | | -|  [`P2460R2 Relax requirements on wchar_t to match existing practices`](https://wg21.link/p2460r2) | no | |
216 | | -|  [`P2468R2 The Equality Operator You Are Looking For`](https://wg21.link/p2468r2) | no | |
217 | | -|  [`P2493R0 Missing feature test macros for C++20 core papers`](https://wg21.link/p2493r0) | no | |
| 216 | +|  [`P2460R2 Relax requirements on wchar_t to match existing practices`](https://wg21.link/p2460r2) | VS 2022 v17.14 | |
| 217 | +|  [`P2468R2 The Equality Operator You Are Looking For`](https://wg21.link/p2468r2) | VS 2022 17.6 <sup>[23](#note_23)</sup> | |
| 218 | +|  [`P2493R0 Missing feature test macros for C++20 core papers`](https://wg21.link/p2493r0) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
218 | 219 | |  [`P2513R4 char8_t Compatibility and Portability Fix`](https://wg21.link/p2513r4) | VS 2022 17.4 <sup>[DR](#note_DR)</sup> | |
219 | | -|  [`P2579R0 Mitigation strategies for P2036 ”Changing scope for lambda trailing-return-type”`](https://wg21.link/p2579r0) | no | |
| 220 | +|  [`P2579R0 Mitigation strategies for P2036 "Changing scope for lambda trailing-return-type"`](https://wg21.link/p2579r0) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> | |
220 | 221 | |  [`P2582R1 Wording for class template argument deduction from inherited constructors`](https://wg21.link/p2582r1) | no | |
221 | 222 |
|
222 | 223 | ## C++ Standard library features |
223 | 224 |
|
224 | 225 | A more detailed listing of Standard Library features and bug fixes by product version is available on the [GitHub Microsoft STL wiki Changelog](https://github.com/microsoft/STL/wiki/Changelog) page. |
225 | 226 |
|
| 227 | +For the latest information about ongoing conformance work, see: |
| 228 | +- [STL C++23 Features](https://github.com/orgs/microsoft/projects/1142/views/2). |
| 229 | +- [STL C++26 Features](https://github.com/orgs/microsoft/projects/1143/views/2). |
| 230 | + |
226 | 231 | | Feature | Supported | |
227 | 232 | |--|--| |
228 | 233 | | **C++14 Standard library features** | **Supported** | |
@@ -437,7 +442,7 @@ A more detailed listing of Standard Library features and bug fixes by product ve |
437 | 442 | |  [`P1208R6 <source_location>`](https://wg21.link/P1208R6) | VS 2019 16.10 <sup>[20](#note_20)</sup> | |
438 | 443 | |  [`P1502R1 Standard Library Header Units`](https://wg21.link/P1502R1) | VS 2019 16.10 <sup>[20](#note_20)</sup> | |
439 | 444 | |  [`P1614R2 Adding Spaceship <=> To The Library`](https://wg21.link/P1614R2) | VS 2019 16.10 <sup>[20](#note_20)</sup> | |
440 | | -|  [`P1285R0 Improving Completeness Requirements For Type Traits`](https://wg21.link/P1285R0) | N/A | |
| 445 | +|  [`P1285R0 Improving Completeness Requirements For Type Traits`](https://wg21.link/P1285R0) | VS 2022 v17.14 | |
441 | 446 | | **C++20 Standard library features (Defect reports)** | **Supported** | |
442 | 447 | |  [`P2325R3 Views Should Not Be Required To Be Default Constructible`](https://wg21.link/P2325r3) | VS 2022 17.0 <sup>[20abi](#note_20abi)</sup> | |
443 | 448 | |  [`P2328R1 join_view should join all views of ranges`](https://wg21.link/P2328R1) | VS 2022 17.0 <sup>[20abi](#note_20abi)</sup> | |
@@ -635,6 +640,10 @@ These algorithms aren't presently parallelized: |
635 | 640 |
|
636 | 641 | <a name="note_T"></a> **T** `<stdatomic.h>` is currently supported when compiled as C++ (`/std:c++latest`). It isn't yet supported when compiled as C (`/std:c11` and `/std:c17`) |
637 | 642 |
|
| 643 | +<a name="note_U"></a> **U** Extended floating-point types are an optional C++23 feature. This feature won't be implemented until C++23 standardization is finalized. |
| 644 | + |
| 645 | +<a name="note_V"></a> **V** Use the compiler options `/source-charset:utf-8` and `/we4828` to treat source files as UTF-8 encoded. |
| 646 | + |
638 | 647 | <a name="note_14"></a> **14** These C++17 and C++20 features are always enabled, even when [`/std:c++14`](../build/reference/std-specify-language-standard-version.md) (the default) is specified. The reason is either because the feature was implemented before the introduction of the **`/std`** options, or because conditional implementation was undesirably complex. |
639 | 648 |
|
640 | 649 | <a name="note_17"></a> **17** These features are enabled by the [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) or later compiler option. |
|
0 commit comments