Skip to content

Commit 8f8b8a2

Browse files
Merge pull request #6136 from TylerMSFT/conformance
update conformance support
2 parents f783de2 + f080949 commit 8f8b8a2

File tree

1 file changed

+41
-32
lines changed

1 file changed

+41
-32
lines changed

docs/overview/visual-cpp-language-conformance.md

Lines changed: 41 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Microsoft C/C++ language conformance"
33
description: "Microsoft C and C++ conformance updates by Visual Studio version."
4-
ms.date: 11/04/2025
4+
ms.date: 11/10/2025
55
ms.service: "visual-cpp"
66
ms.subservice: "cpp-lang"
77
---
@@ -174,55 +174,60 @@ For details on conformance improvements, see [C++ conformance improvements in Vi
174174
| &emsp;[`P1073R3 Immediate functions`](https://wg21.link/P1073R3) | VS 2019 16.10 <sup>[20](#note_20)</sup> |
175175
| &emsp;[`P1143R2 constinit`](https://wg21.link/P1143R2) | VS 2019 16.10 <sup>[20](#note_20)</sup> |
176176
| &emsp;[`P1353R0 Missing feature-test macros`](https://wg21.link/P1353R0) | VS 2019 16.10 <sup>[20](#note_20)</sup> |
177-
| &emsp;[`P0735R1 Interaction of memory_order_consume with release sequences`](https://wg21.link/P0735R1) | N/A |
178-
| &emsp;[`P1236R1 Signed integers are two's complement`](https://wg21.link/P1236R1) | N/A |
177+
| &emsp;[`P0735R1 Interaction of memory_order_consume with release sequences`](https://wg21.link/P0735R1) | VS 2022 v17.14 |
178+
| &emsp;[`P1236R1 Signed integers are two's complement`](https://wg21.link/P1236R1) | VS 2022 v17.14 |
179179
| **C++23 Core language features** | **Supported** |
180-
| &emsp;[`P0330R8 Literal Suffix for (signed) size_t`](https://wg21.link/p0330r8) | no |
181-
| &emsp;[`P0847R7 Deducing this`](https://wg21.link/p0847r7) | no |
182-
| &emsp;[`P0849R8 auto(x): decay-copy in the language`](https://wg21.link/p0849r8) | no |
183-
| &emsp;[`P1102R2 Down with ()!`](https://wg21.link/p1102r2) | no |
184-
| &emsp;[`P1169R4 static operator()`](https://wg21.link/p1169r4) | no |
185-
| &emsp;[`P1401R5 Narrowing contextual conversions to bool`](https://wg21.link/p1401r5) | no |
186-
| &emsp;[`P1467R9 Extended floating-point types and standard names`](https://wg21.link/p1467r9) | no |
180+
| &emsp;[`P0330R8 Literal Suffix for (signed) size_t`](https://wg21.link/p0330r8) | VS 2022 17.13 <sup>[23](#note_23)</sup> |
181+
| &emsp;[`P0847R7 Deducing this`](https://wg21.link/p0847r7) | VS 2022 17.13 <sup>[23](#note_23)</sup> |
182+
| &emsp;[`P0849R8 auto(x): decay-copy in the language`](https://wg21.link/p0849r8) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> |
183+
| &emsp;[`P1102R2 Down with ()!`](https://wg21.link/p1102r2) | VS 2022 17.14 <sup>[23](#note_23)</sup> |
184+
| &emsp;[`P1169R4 static operator()`](https://wg21.link/p1169r4) | VS 2022 17.14 <sup>[23](#note_23)</sup> |
185+
| &emsp;[`P1401R5 Narrowing contextual conversions to bool`](https://wg21.link/p1401r5) | VS 2022 17.14 <sup>[23](#note_23)</sup> |
186+
| &emsp;[`P1467R9 Extended floating-point types and standard names`](https://wg21.link/p1467r9) | No <sup>[U](#note_U)</sup> |
187187
| &emsp;[`P1774R8 Portable assumptions`](https://wg21.link/p1774r8) | no |
188-
| &emsp;[`P1787R6 Declarations and where to find them`](https://wg21.link/p1787r6) | no |
188+
| &emsp;[`P1787R6 Declarations and where to find them`](https://wg21.link/p1787r6) | No change required |
189189
| &emsp;[`P1847R4 Make declaration order layout mandated`](https://wg21.link/p1847r4) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
190-
| &emsp;[`P1938R3 if consteval`](https://wg21.link/p1938r3) | no |
191-
| &emsp;[`P1949R7 C++ Identifier Syntax using Unicode Standard Annex 31`](https://wg21.link/p1949r7) | no |
190+
| &emsp;[`P1938R3 if consteval`](https://wg21.link/p1938r3) | VS 2022 17.14 <sup>[23](#note_23)</sup> |
191+
| &emsp;[`P1949R7 C++ Identifier Syntax using Unicode Standard Annex 31`](https://wg21.link/p1949r7) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> |
192192
| &emsp;[`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-
| &emsp;[`P2036R3 Change scope of lambda trailing-return-type`](https://wg21.link/p2036r3) | no |
193+
| &emsp;[`P2036R3 Change scope of lambda trailing-return-type`](https://wg21.link/p2036r3) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> |
194194
| &emsp;[`P2071R2 Named universal character escapes`](https://wg21.link/p2071r2) | no |
195-
| &emsp;[`P2128R6 Multidimensional subscript operator`](https://wg21.link/p2128r6) | no |
196-
| &emsp;[`P2156R1 Allow Duplicate Attributes`](https://wg21.link/p2156r1) | no |
197-
| &emsp;[`P2173R1 Attributes on Lambda-Expressions`](https://wg21.link/p2173r1) | no |
195+
| &emsp;[`P2128R6 Multidimensional subscript operator`](https://wg21.link/p2128r6) | VS 2022 17.12 <sup>[23](#note_23)</sup> |
196+
| &emsp;[`P2156R1 Allow Duplicate Attributes`](https://wg21.link/p2156r1) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> |
197+
| &emsp;[`P2173R1 Attributes on Lambda-Expressions`](https://wg21.link/p2173r1) | VS 2022 17.14 <sup>[23](#note_23)</sup> |
198198
| &emsp;[`P2186R2 Remove Garbage Collection Support`](https://wg21.link/p2186r2) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
199-
| &emsp;[`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | no |
200-
| &emsp;[`P2223R2 Trimming whitespaces before line splicing`](https://wg21.link/p2223r2) | no |
201-
| &emsp;[`P2242R3 Non-literal variables (and labels and gotos) in constexpr functions`](https://wg21.link/p2242r3) | no |
199+
| &emsp;[`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | VS 2022 17.14 |
200+
| &emsp;[`P2223R2 Trimming whitespaces before line splicing`](https://wg21.link/p2223r2) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> |
201+
| &emsp;[`P2242R3 Non-literal variables (and labels and gotos) in constexpr functions`](https://wg21.link/p2242r3) | VS 2022 17.14 <sup>[23](#note_23)</sup> |
202202
| &emsp;[`P2246R1 Character encoding of diagnostic text`](https://wg21.link/p2246r1) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
203-
| &emsp;[`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | no |
204-
| &emsp;[`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | no |
205-
| &emsp;[`P2295R6 Support for UTF-8 as a portable source file encoding`](https://wg21.link/p2295r6) | no |
203+
| &emsp;[`P2266R3 Simpler implicit move`](https://wg21.link/p2266r3) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> |
204+
| &emsp;[`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+
| &emsp;[`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> |
206+
| &emsp;[`P2295R6 Support for UTF-8 as a portable source file encoding`](https://wg21.link/p2295r6) | <sup>[V](#note_V)</sup> |
206207
| &emsp;[`P2314R4 Character sets and encodings`](https://wg21.link/p2314r4) | no |
207208
| &emsp;[`P2316R2 Consistent character literal encoding`](https://wg21.link/p2316r2) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
208209
| &emsp;[`P2324R2 Labels at the end of compound statements (C compatibility)`](https://wg21.link/p2324r2) | no |
209-
| &emsp;[`P2327R1 De-deprecating volatile compound operations`](https://wg21.link/p2327r1) | no |
210-
| &emsp;[`P2334R1 preprocessing directives elifdef and elifndef`](https://wg21.link/p2334r1) | no |
211-
| &emsp;[`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | no |
210+
| &emsp;[`P2327R1 De-deprecating volatile compound operations`](https://wg21.link/p2327r1) | VS 2022 v17.14 |
211+
| &emsp;[`P2334R1 preprocessing directives elifdef and elifndef`](https://wg21.link/p2334r1) | VS 2022 17.10 <sup>[23](#note_23)</sup> |
212+
| &emsp;[`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> |
212213
| &emsp;[`P2362R3 Remove non-encodable wide character literals and multicharacter wide character literals`](https://wg21.link/p2362r3) | no |
213-
| &emsp;[`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | no |
214+
| &emsp;[`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC Build Tools version 14.50 <sup>[24](#note_24)</sup> |
214215
| &emsp;[`P2448R2 Relaxing some constexpr restrictions`](https://wg21.link/p2448r2) | no |
215-
| &emsp;[`P2460R2 Relax requirements on wchar_t to match existing practices`](https://wg21.link/p2460r2) | no |
216-
| &emsp;[`P2468R2 The Equality Operator You Are Looking For`](https://wg21.link/p2468r2) | no |
217-
| &emsp;[`P2493R0 Missing feature test macros for C++20 core papers`](https://wg21.link/p2493r0) | no |
216+
| &emsp;[`P2460R2 Relax requirements on wchar_t to match existing practices`](https://wg21.link/p2460r2) | VS 2022 v17.14 |
217+
| &emsp;[`P2468R2 The Equality Operator You Are Looking For`](https://wg21.link/p2468r2) | VS 2022 17.6 <sup>[23](#note_23)</sup> |
218+
| &emsp;[`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> |
218219
| &emsp;[`P2513R4 char8_t Compatibility and Portability Fix`](https://wg21.link/p2513r4) | VS 2022 17.4 <sup>[DR](#note_DR)</sup> |
219-
| &emsp;[`P2579R0 Mitigation strategies for P2036 Changing scope for lambda trailing-return-type`](https://wg21.link/p2579r0) | no |
220+
| &emsp;[`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> |
220221
| &emsp;[`P2582R1 Wording for class template argument deduction from inherited constructors`](https://wg21.link/p2582r1) | no |
221222

222223
## C++ Standard library features
223224

224225
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.
225226

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+
226231
| Feature | Supported |
227232
|--|--|
228233
| **C++14 Standard library features** | **Supported** |
@@ -437,7 +442,7 @@ A more detailed listing of Standard Library features and bug fixes by product ve
437442
| &emsp;[`P1208R6 <source_location>`](https://wg21.link/P1208R6) | VS 2019 16.10 <sup>[20](#note_20)</sup> |
438443
| &emsp;[`P1502R1 Standard Library Header Units`](https://wg21.link/P1502R1) | VS 2019 16.10 <sup>[20](#note_20)</sup> |
439444
| &emsp;[`P1614R2 Adding Spaceship <=> To The Library`](https://wg21.link/P1614R2) | VS 2019 16.10 <sup>[20](#note_20)</sup> |
440-
| &emsp;[`P1285R0 Improving Completeness Requirements For Type Traits`](https://wg21.link/P1285R0) | N/A |
445+
| &emsp;[`P1285R0 Improving Completeness Requirements For Type Traits`](https://wg21.link/P1285R0) | VS 2022 v17.14 |
441446
| **C++20 Standard library features (Defect reports)** | **Supported** |
442447
| &emsp;[`P2325R3 Views Should Not Be Required To Be Default Constructible`](https://wg21.link/P2325r3) | VS 2022 17.0 <sup>[20abi](#note_20abi)</sup> |
443448
| &emsp;[`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:
635640

636641
<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`)
637642

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+
638647
<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.
639648

640649
<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

Comments
 (0)