{"id":35448,"date":"2025-05-06T15:00:34","date_gmt":"2025-05-06T15:00:34","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=35448"},"modified":"2025-05-06T17:21:52","modified_gmt":"2025-05-06T17:21:52","slug":"c-language-updates-in-msvc-in-visual-studio-2022-17-14","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/c-language-updates-in-msvc-in-visual-studio-2022-17-14\/","title":{"rendered":"C++ Language Updates in MSVC in Visual Studio 2022 17.14"},"content":{"rendered":"<h2 id=\"introduction\">Introduction<\/h2>\n<p>In this update, we continue the tradition of bucketing bugs into helpful categories for you all to filter through along with even <em>more<\/em> notes from the compiler team as to what, exactly, was fixed. This blog is also complemented by the recent <a href=\"https:\/\/www.youtube.com\/watch?v=H8nGW3GY868\">Pure Virtual C++<\/a> pre-conference talk by RanDair Porter; so please check out RanDair&#8217;s talk, <a href=\"https:\/\/www.youtube.com\/watch?v=MfYZQu9zG80\">&#8220;MSVC C++23 Conformance&#8221;<\/a>, if you have not already to get a better view of MSVC&#8217;s conformance status for Visual Studio 2022 overall.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/msvc-compiler-updates-in-visual-studio-2022-version-17-13\/\">17.13 notes for reference.<\/a><\/p>\n<h2 id=\"c-23-features-\">C++23 Features<\/h2>\n<p><strong>Note:<\/strong> C++23 features can be used by either adding <code>\/std:c++latest<\/code> or\n<code>\/std:c++23preview<\/code> to the command line. In addition, features used from unfinished standards may not\nhave full IntelliSense support.<\/p>\n<ul>\n<li>Add support for <a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2020\/p1102r2.html\">P1102R2<\/a>\n(Down with ()!) which makes a parameter-list an optional part of a lambda-declarator.<\/li>\n<\/ul>\n<pre class=\"prettyprint language-cpp\"><code class=\"langauge-cpp\">auto lambda = [] constexpr { }; \/\/ C++23: can now omit the '()' after the capture list.<\/code><\/pre>\n<ul>\n<li>Implemented <a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2021\/p1938r3.html\">P1938R3<\/a>:\n<code>if consteval<\/code> for C++23.<\/li>\n<\/ul>\n<pre class=\"prettyprint language-cpp\"><code class=\"langauge-cpp\">constexpr int f(int) {\r\n  if consteval { \/\/ C++23: previously this would be 'if (std::is_constant_evaluated()) { ... }'.\r\n    return 42;\r\n  }\r\n  else {\r\n    return 1337;\r\n  }\r\n}\r\nint main(int argc, const char**) {\r\n  static_assert(f(0) == 42);\r\n  int x = f(argc);\r\n  if (x != 1337) \/\/ Since 'f' cannot be evaluated at compile-time, the value here is '1337'\r\n                 \/\/ due to taking the 'else' branch in 'f'.\r\n    return 1;\r\n}<\/code><\/pre>\n<ul>\n<li>Implement <a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2021\/p1401r5.html\">P1401R5<\/a> &#8211;\nNarrowing contextual conversions to bool, making the following well-formed as of C++23:<\/li>\n<\/ul>\n<pre class=\"prettyprint language-cpp\"><code class=\"langauge-cpp\">enum Flags { Zero, One, Two };\r\nstatic_assert(One | Two);<\/code><\/pre>\n<ul>\n<li>Add support of <a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2021\/p2173r1.pdf\">P2173R1<\/a> &#8211;\nattributes for lambda-expressions.<\/li>\n<\/ul>\n<pre class=\"prettyprint language-cpp\"><code class=\"langauge-cpp\">auto lambda = [] [[nodiscard]] [[deprecated]] { return 10; };\r\nvoid f() {\r\n  lambda(); \/\/ C++23: Attributes here will fire a deprecation warning and a discard of return value warning.\r\n}<\/code><\/pre>\n<ul>\n<li>Implement <a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2022\/p1169r4.html\">P1169R4<\/a> which adds\nsupport for <code>static operator()<\/code>.<\/li>\n<li>Implement <a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2022\/p2589r1.pdf\">P2589R1<\/a> which adds\nsupport for <code>static operator[]<\/code>.<\/li>\n<\/ul>\n<pre class=\"prettyprint language-cpp\"><code class=\"langauge-cpp\">struct Functor {\r\n  static constexpr int operator()() { return 42; }\r\n  static constexpr int operator[](int) { return 42; }\r\n};\r\nusing T1 = decltype(Functor::operator()());  \/\/ C++23: Deduces to 'int'.\r\nstatic_assert(Functor::operator()() == 42); \/\/ C++23: Can be used without creating a 'Functor' object.\r\n\r\nusing T2 = decltype(Functor::operator[](10));  \/\/ C++23: Deduces to 'int'.\r\nstatic_assert(Functor::operator[](10) == 42); \/\/ C++23: Can be used without creating a 'Functor' object.<\/code><\/pre>\n<h3 id=\"smaller-c-23-items\">Smaller C++23 Items<\/h3>\n<ul>\n<li>Implement <a href=\"https:\/\/cplusplus.github.io\/CWG\/issues\/2428.html\">CWG2428<\/a> &#8211; Deprecating a concept.<\/li>\n<\/ul>\n<h2 id=\"compiler-improvements-for-17-14\">Compiler improvements for 17.14<\/h2>\n<h3 id=\"c-cli\">C++\/CLI<\/h3>\n<ul>\n<li>Fix bug where std::optional could not be used with managed types.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Regression-in-17120:-Substitution-Fail\/10792624\">Regression\nin 17.12.0: Substitution Failure Is An Error C3699 when compiling with \/CLR<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue related to nested lambdas and pack-expansions and stop emitting a warning related to\n&#8216;volatile&#8217; if the class type is imported.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/content\/problem\/1114850\/version-1670-preview-40-ccli-warning-c5220-is-issu.html\">[Version\n16.7.0 Preview 4.0] [C++\/CLI] Warning C5220 is issued for non-static data members of classes\nimported from metadata<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-rejects-valid-pack-expansion-of-lam\/10599041\">MSVC\nrejects valid pack expansion of lambda expressions <\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix regression in C++\/CLI which causes a crash or bad diagnostics when calling functions with parameter-arrays\nand compiling for Net Core.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Error-with-String::Format-in-C-CLR-Cla\/10788352\">Error\nwith String::Format in C++ CLR Class Library (.NET) project<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Compilation-Error-Occurs-When-Using-std:\/10734025\">Compilation\nError Occurs When Using std::shared_ptr in C++\/CLI Code<\/a><\/li>\n<\/ul>\n<h3 id=\"diagnostics\">Diagnostics<\/h3>\n<ul>\n<li>Add a warning to detect undefined behavior mentioned in [meta.reqmts].\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/C-std::is_signed_v-is-implemented-wron\/10665561\">C++\nstd::is_signed_v is implemented wrong.<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixes the lack of a diagnostic on an initialization getting skipped over in a switch statement.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Variable-Declaration-Allowed-Inside-Swit\/10281175\">Variable\nDeclaration Allowed Inside Switch Case Without Scoping Operator<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix missing error diagnostic for explicit constructor initialization\n<ul>\n<li><a href=\"https:\/\/developercommunity2.visualstudio.com\/t\/list-init-of-aggregate-with-explicitly-d\/1326684\">list-init\nof aggregate with explicitly-default-constructible member incorrectly accepted<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"-constexpr-\"><code>constexpr<\/code><\/h3>\n<ul>\n<li>Prevent binding constexpr references to local temporaries\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/constexpr-reference-should-bind-to-globa\/10826064\">constexpr\nreference should bind to global variable<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix spurious error where <code>if consteval<\/code> would not properly be considered in consetxpr functions.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/error-C3615-constexpr-function-f-cann\/10857535\">error\nC3615 &#8220;constexpr function &#8216;f&#8217; cannot result in a constant expression&#8221; does not\nproperly recognize early return in <code>if consteval<\/code><\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with combing a non-type template parameter of reference type with a template argument that is a\nfunction call that returns by reference.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity2.visualstudio.com\/t\/std::is_constant_evaluated-fails-in-fu\/1271614\">std::is_constant_evaluated()\nfails in function returning reference<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix a bug in immediate function folding that resulted in bad string data\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/user-literals-causes-crash-if-its-cons\/10683502\">user\nliterals causes crash if it&#8217;s <code>consteval<\/code> but not if it&#8217;s\n<code>constexpr<\/code>.<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix incorrect C7595 errors in constructor member initializers and as the object expression of member access\nexpressions<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Error-calling-consteval-function-from-an\/1669482\">Error\ncalling consteval function from an ordinary constructor<\/a><\/li>\n<\/ul>\n<\/li>\n<li>We now run destructors during constant evaluation that appear in the init-stmt of a for loop\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-doesnt-proper-destroy-a-loop-varia\/10808176\">MSVC\ndoesn&#8217;t properly destroy a loop variable in constant evaluation<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed constexpr __builtin_memcmp comparing unsigned chars\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/regression-v1710:-__builtin_memcmp-\/10701277\">[regression]\nv17.10: __builtin_memcmp() yields erroneous results if evaluated at compile time<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an incorrect rejection of an out-of-line static constexpr data member definition\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/C2370-is-falsely-emitted-when-a-static-c\/898167\">C2370\nis falsely emitted when a static const member is defined with the constexpr specifier outside a\ntemplate class<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Assigning-value-to-field-of-base-class-i\/10792451\">Assigning\nvalue to field of base class in constexpr virtual function gennerates ICE<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Labeled-statements-is-incorrectly-reject\/10851261\">Labeled\nstatements is incorrectly rejected during constant evaluation<\/a><\/li>\n<\/ul>\n<h3 id=\"c-modules\">C++ Modules<\/h3>\n<ul>\n<li>Fix issue where the compiler would sometimes issue a syntax error when parsing template-ids from a module.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-C20-modules:-export-using-templat\/10826448\">MSVC\nC++20 modules: export using template alias<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed an issue where users would sometimes see linker errors with certain inline functions from a module and\nvarious other compiler issues when building with header units enabled for Unreal Engine 5.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Unreal-does-not-build-with-header-units-\/10800119\">Unreal\ndoes not build with header units enabled<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix ICE in the compiler when importing a type with an apparent cyclic dependency on itself\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/CCLI-internal-compiler-error-importin\/1542341\">C++\/CLI\ninternal compiler error importing types from C# dll<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed an issue where custom-defined data sections were not persisted into a C++ module.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/C2341-is-incorrectly-raised-if-the-segme\/10187003\">C2341\nis incorrectly raised if the segment is defined in a header unit module<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed a case where C5260 was firing spuriously\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/When-building-a-header-unit-module-usin\/10185032\">When\nbuilding a header unit module, using a <code>static const<\/code> variable in a template causes C5260\nto incorrectly fire<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed an issue where using a class marked as <code>__declspec(dllimport)<\/code> would sometimes issue a linker\nerror when imported through a module.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/unresolved-external-symbol-local-vftable\/10417737\">unresolved\nexternal symbol local vftable when using modules, dll, virtual destructor and MSVC 14.36.17.6<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed an issue where the compiler would sometimes crash when loading a PCH with a module import.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Internal-Compiler-Error-if-std::shared_p\/10262449\">Internal\nCompiler Error if std::shared_ptr is used both with and without modules<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed a bug where functions returning <code>auto<\/code> would sometimes not be resolved from a module.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Error-C3779-using-C20-modules-due-to-u\/10775150\">Error\nC3779 using C++20 modules due to unrecognized function definition<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Duplicate-COMDAT-error-when-using-C20-\/10805736\">Duplicate\nCOMDAT error when using C++20 modules<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed compiler crash in modules when using lambdas in static member functions of a class.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/False-positive-C2028-error-with-c-modu\/10853719\">False\npositive C2028 error with c++ modules<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix a compiler crash when trying to match explicit object member functions which originate outside a C++ module.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/C2028-caused-by-weird-interaction-of-mod\/10860345\">C2028\ncaused by weird interaction of modules and a virtual function calling a deducing this function.<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with mdspan and modules.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Cannot-use-C23-multi-dimensional-opera\/10868352\">Cannot\nuse C++23 multi-dimensional operator[] in concepts in modules due to &#8220;Sorry: not yet\nimplemented&#8221; internal compiler error<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed an issue when using <code>std::ranges<\/code> in modules where the compiler would issue a syntax error.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/A-custom-formatter-and-a-module-raise-er\/10755613\">A\ncustom formatter and a module raise errors in __msvc_formatter.hpp<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix issue where <code>__vectorcall<\/code> functions in a module would sometimes not compile.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/__vectorcall-conflicts-with-C-modules\/10484298\">__vectorcall\nconflicts with C++ modules<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"conformance\">Conformance<\/h3>\n<ul>\n<li>Implement CWG 1213: Array subscripting and xvalues\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Subscripting-an-rvalue-array-does-not-ge\/10707244\">Subscripting\nan rvalue array does not generate an rvalue in VS2019<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Added <code>\/Zc:u8EscapeEncoding<\/code> for conformant encoding of escape sequences like u8&#8243;\\xFF&#8221;\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/hex-escape-codes-in-a-utf8-literal-are-t\/225847\">Hex\nescaping in strings can&#8217;t be compiled in v15.6.5<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/escape-sequences-in-unicode-string-liter\/260684\">escape\nsequences in unicode string literals are overencoded (non conforming =&gt; compiler bug)<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/VC-is-incorrectly-encoding-UTF-8-x-esc\/347197\">VC++\nis incorrectly encoding UTF-8 \\x escape chars as \\u escape chars<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix missing diagnostic for mixing &#8216;friend&#8217; and &#8216;static&#8217;.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/accepts-invalid-cl-accepts-static-frie\/535960\">[accepts\ninvalid] cl accepts static friend functions<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix issue where lookup-related diagnostics are missing in fold expressions\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Fold-expressions-unreliable-in-171-with\/1676476\">Fold\nexpressions unreliable in 17.1 with c++20<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed an issue where the compiler did not conform to <a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2020\/p1779r3.html\">P1779R3<\/a>.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Module-TU-local-function-called-via-non-\/10263594\">Assertion\nfailed: !XMVector3IsInfinite(EyeDirection) when there is no implementation unit for a module which\nincludes DirectXMath.h<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"reliability\">Reliability<\/h3>\n<ul>\n<li>Fix a compiler crash when using d1initall and constant evaluation\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/ICE-when-using-d1initall-in-a-constexpr-\/10809997\">ICE\nwhen using d1initall in a constexpr context<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix a compiler crash caused by a pointer-to-member\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Internal-compiler-error-CRTP-multiple-\/10151890\">Internal\ncompiler error (CRTP, multiple inheritance)<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix a silent compiler crash on certain malformed explicit destructor calls.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Compiler-crashes-but-with-no-ICE-appare\/10813874\">Compiler\ncrashes (but with no ICE apparently) on this code<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix a compiler crash related to default function parameters\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Internal-compiler-error-with-VS17123-w\/10814618\">Internal\ncompiler error with VS17.12.3 when compiling a function with a default parameter involving multiple\nvector operations<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with name-lookup of a <em>conversion-function-id<\/em> and an issue related to the pack-expansion of\na nested lambda.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-v19-fatal-error-C1001:-Internal-com\/10830908\">MSVC\nv19 fatal error C1001: Internal compiler error.<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an ICE in certain alias template definitions with multi-component, dependent nested names.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Internal-compiler-error-for-some-templat\/10178789\">Internal\ncompiler error for some template aliases<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix ICE when C11 _Atomic is used with PCH\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Adding-including-stdatomichgenerates\/10783271\">Adding\n#including generates C1001: Internal compiler error: &#8216;msc1.cpp&#8217;, line 1599 in\nVisual Studio 2022 Version 17.12.0 Preview 5.0<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an ICE with certain noexcept-specifiers\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/ICE-when-having-virtual-noexceptconstex\/1531831\">ICE\nwhen having virtual noexcept(constexpr) function with argument<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix a crash in constant evaluation with base-to-derived conversions of pointers to array elements\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/ICE-when-calling-CRTP-function-with-memb\/1517303\">ICE\nwhen calling CRTP function with member access from constexpr array member<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue relating to explicit lambda template parameters and also an issue related to a multidimensional\nsubscript operator<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/ICE-using-lambda-template-parameter-as-s\/10778800\">ICE\nusing lambda template parameter as size for an array<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-rejects-a-template-argument-with-mu\/10815450\">MSVC\nrejects a template argument with multidimensional subscript operator<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixes extreme memory use for some zero-initialized arrays (and aggregates thereof)\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Compiler-memory-usage-explodes-with-lamb\/10573182\">Compiler\nmemory usage explodes with lambda returning large structure<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an ICE on a decltype containing a noexcept expression\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Internal-compiler-error-if-use-noexcept-\/10845122\">Internal\ncompiler error if use noexcept inside decltype<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with class template argument deduction for alias templates\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/ICE-with-Eigen-340-when-missing-templa\/10832467\">ICE\nwith Eigen 3.4.0 when missing template argument<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an ICE with some ill-formed qualified names.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/CL-std:clatest---INTERNAL-COMPILER-ER\/10802160\">CL\n\/std:c++latest &#8211; INTERNAL COMPILER ERROR C1001 tested in CL v19.42.34435 and CL v19.43.34604<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with dependent base-classes and class template argument deduction for aggregates.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/ICE-on-CTAD-for-aggregate-derived-from-a\/10864939\">ICE\non CTAD for aggregate derived from a local class type<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix a crash with brace-initialization of an object containing a const reference member\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Internal-Compiler-Error-ICE-when-an-ob\/10808136\">Internal\nCompiler Error (ICE) when an object is brace initialized using another object that contains a\nreference<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/fatal-error-C1001:-Internal-compiler-err\/10856022\">fatal\nerror C1001: Internal compiler error on atomic operation with struct<\/a><\/li>\n<\/ul>\n<h3 id=\"correctness\">Correctness<\/h3>\n<ul>\n<li>Fix incorrect error given when a base class name referenced in a template is found on multiple base class paths.\n<ul>\n<li><a href=\"https:\/\/developercommunity2.visualstudio.com\/t\/error-C2385:-ambiguous-access-of-IUnkno\/230955\">error\nC2385: ambiguous access of &#8216;IUnknown&#8217; referring to common base class in VS2017.7 Preview\n3<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Correct an issue with using directives not being respected in some nested lambdas.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Nested-template-lambda-accidentally-ig\/10802570\"><code>Nested template lambda<\/code>\naccidentally ignores the <code>using-directives<\/code> of the parent scope, and thus the\n<code>non-ADL user-defined literals<\/code> to fail.<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Add missing diagnostic for ill-formed pure-specifier and fix issue with combination of &#8216;volatile&#8217; and\ncopy-assignment operators.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/content\/problem\/996890\/pure-virtual-functions-should-require-a-literal-0.html\">[accepts\ninvalid] VS accepts invalid pure specifier<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Possible-C-compiler-bug:-copy-assignme\/10173503\">Possible\nC++ compiler bug: copy assignment operator with volatile qualifier<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue related to the backing array for a std::initializer_list being destroyed too soon.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Optimization-removes-initialization-for-\/10455125\">Optimization\nremoves initialization for std::initializer_list of trivially copyable objects<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with lambda captures within a decltype-specifier, and an issue with a static_assert within a\nconcept.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Error-C2327-in-decltype-context-within-l\/10775436\">Error\nC2327 in decltype context within lambda referencing member variable (C++20)<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-ignores-static_assert-inside-concep\/10780672\">MSVC\nignores static_assert inside concept definition<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix a case where the compiler dropped pointer dereference of a cast of a pointer to an array in some cases\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/What-is-the-reason-for-a-behavior-change\/10808170\">Incorrect\ncode generated with convoluted pointer casting<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix incorrect access checks in certain alias templates\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-fails-to-compile-template-member-fu\/10832533\">MSVC\nfails to compile template member function full specialization with private type and type alias\narguments<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue where a volatile reference could bind to an rvalue of a derived class\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/_MSC_VER--1940-MSVC-allows-binding-a-\/10811594\">[_MSC_VER\n= 1940] MSVC allows binding a const volatile lvalue reference to an rvalue under\n<code>\/permissive-<\/code><\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with the initialization of a variable of class type that is volatile.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-discards-volatile-variable\/10834274\">MSVC\ndiscards volatile variable<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix incorrect error C3770 when certain alias template specializations are used as base classes\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Const-base-class-rejected-when-used-thro\/10825754\">Const\nbase class rejected when used through alias template<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with capturing &#8216;this&#8217; in a lambda that is part of an init-capture and an issue in which the\ncompiler to did not correctly handle an abstract class type during template argument substitution.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Unable-to-directly-access-member-variabl\/10801088\">Unable\nto directly access member variable inside lambda nested in capture list of lambda<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Call-to-method-template-with-abstract-cl\/10817327\">Call\nto method template with abstract class parameter may fail depending on call point<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue in which a variable with an &#8216;auto&#8217; type was referenced before its type had been deduced and\nan issue in which a valid goto-statement within an if-constexpr statement was flagged as an error.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/ICE-when-recursively-calling-a-lambda-te\/10794160\">ICE\nwhen recursively calling a lambda template<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Incorrect-C3907-in-C20-only\/10872427\">Incorrect\nC3907 in C++20 only<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue in which warning C4100, &#8220;unused parameter&#8221;, was not emitted,\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/vriable-passed-by-value-and-warning-4100\/10252561\">variable\npassed by value and warning 4100<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an invalid error C2210 with some alias template specializations\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/error-C2210-Compile-error\/10830348\">error C2210\nCompile error<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with lambdas in a class with virtual bases.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Compilation-error-in-lambda-expressions-\/10825673\">Compilation\nerror in lambda expressions in hierarchies with virtual inheritance<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with the zero-initialization of arrays with \/d1initAll\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/d1initall1023-d1initAll:FillPatternE2-\/10812330\">\/d1initall1023\n\/d1initAll:FillPatternE2 options causes incorrect initialization results in constant evaluation<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with decltype and calls to static member functions with an object and an issue with warnings and\nthe conditional operator<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Illegal-use-of-undefined-type\/10465157\">Illegal\nuse of undefined type<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/C4365-incorrect-warning-and-diagnostic-l\/10875348\">C4365\nincorrect warning and diagnostic location<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Address an issue in which C4100, unused parameter, was not emitted.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/vriable-passed-by-value-and-warning-4100\/10252561\">variable\npassed by value and warning 4100<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with aggregate initialization when a non-static data member is a self-referential reference type.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/too-many-initializers-error-for-valid-\/1539585\">&#8220;too\nmany initializers&#8221; error for valid code<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with hidden friend functions that are declared to return &#8216;auto&#8217;\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Unable-to-compile-this-piece-of-code-wit\/10795218\">Unable\nto compile this piece of code with constexpr and auto since 17.12.0<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix a regression that a deduction guide has incorrect return type.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/CTAD-failure-with-deduction-guide-in-the\/10831853\">CTAD\nfailure with deduction guide in the abbreviated function template form<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Correct invalid implicit move of extern or thread_local variables\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-incorrectly-implicitly-moves-a-non-\/10825317\">MSVC\nincorrectly implicitly moves a non-local variable when the function contains its non-defining\ndeclaration<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix issue where braced initialization in a non-type template argument would confuse the compiler.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Syntax-error-when-using-non-type-templat\/10729428\">Syntax\nerror when using non-type template parameters in templated class member function<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with a template-id that had a template-argument that used a decltype-specifier and fix an issue\nwith a variable template + class template argument deduction + lambdas<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Failure-with-concept-containing-decltype\/10840010\">Failure\nwith concept containing decltype and lambda<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Rejects-valid-variable-template-CTAD-for\/10869223\">Rejects\nvalid variable template CTAD for aggregate<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with &#8216;[[no_unique_address]]&#8217; and trivial copy\/move assignment operators.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/std::set-broken-under-VS-17124-with-n\/10837331\">std::set\nbroken under VS 17.12.4 with &#8220;no_unique_address&#8221; comparator<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix and issue with a compiler requires-expression in an if-constexpr statement.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/The-requires-requires-doesnt-short-ci\/10822127\">The\n&#8216;requires requires&#8217; doesn&#8217;t short-circuit when used in &#8216;if constexpr&#8217;<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix incorrect template specialization involving certain qualified-names and dependent base classes.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/C-compilation-error-on-using-BoostRan\/10813169\">C++\ncompilation error on using Boost.Range<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix incorrect access checks in certain alias templates\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-fails-to-compile-template-member-fu\/10832533\">MSVC\nfails to compile template member function full specialization with private type and type alias\narguments<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an incorrect type-deduction failure involving certain template specializations and empty packs.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/formatter-for-empty-tuples-is-broken-in-\/10837269\">formatter\nfor empty tuples is broken in VS 17.13<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fixed a bug where a user-provided <code>operator,<\/code> would sometimes not be called if there was a cast\ninvolved on one of the operands.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Silent-bad-codegen:-Operand-to-overloade\/10855548\">Silent\nbad codegen: Operand to overloaded operator comma is wrongly turned into pointer<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with undecorating cv-qualified nullptr.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/c-Bug-in-type_infoname-for-TMyClass\/10801963\">c++\nBug in type_info.name() for TMyClass_const std::nullptr<em>t<\/em><\/a><\/li>\n<\/ul>\n<\/li>\n<li>Reduced implementation divergence between clang and gcc when C++23 explicit object functions are called in\nvarious cases.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/C23-Deducing-This-build-error-for-Dog:\/1705020\">C++23\nDeducing This build error for Cat::Meow(this, float) in VS2022 Preview 2.1 (Version 17.2.0)<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue related to pack-expansion and an issue related to the use of &#8216;decltype(auto)&#8217; within a\nlambda.<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Compiler-error-expanding-parameter-pack\/10838085\">Compiler\nerror expanding parameter pack<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Compilation-Failure-with-decltypeauto-\/10867628\">Compilation\nFailure with decltype(auto) in Lambda Capture on MSVC, Works on GCC\/Clang<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue causing temporaries to be required in certain conditional expressions.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-incorrectly-attempts-to-call-the-co\/10825946\">MSVC\nincorrectly attempts to call the copy constructor for xvalue conditional expression<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Add missing checks for deduction guide and trailing return type.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/decorated-auto-accepted-despite-a-traili\/10799228\">decorated\nauto accepted despite a trailing-return-type<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Const-in-deduction-guide\/10806776\"><code>Const<\/code>\nin deduction guide<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Fix an issue with the compiler emitting the IL for a special member function when it was not ODR used.\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/std::vector-tries-to-default-construct-a\/10838060\">std::vector\ntries to default construct an object from constructor accepting std::initializer_list<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/C20-compile-error-with-ATL::CComPtr\/10833434\">C++20\ncompile error with ATL::CComPtr&lt;&gt;<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Cannot-capture-local-constexpr-closure-o\/10855644\">Cannot\ncapture local constexpr closure object in lambda in C++20 mode<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/VisualCppTools--ppltasksh-race-conditi\/10813456\">VisualCppTools\n\/ ppltasks.h race condition bug in when_any<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Write-to-base-class-member-through-virtu\/10792751\">Write\nto base class member through virtual function called by another function fails to compile.<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/vcruntime-nothrow-array-operator-new-fal\/10373274\">vcruntime\nnothrow array operator new falls back on the wrong function<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/17125-internal-preview-fails-to-scan-P\/10833569\">17.12.5\ninternal preview fails to scan PreFast on cppcorecheck plugin<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-instantiates-constexpr-destructors-\/10604135\">MSVC\ninstantiates constexpr destructors too early when data member initializers are involved<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/VC-2017:-Member-enumeration-of-class-t\/91207\">VC++ 2017:\nMember enumeration of class template cannot be defined outside of the class template definition.<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/MSVC-194334808-Preprocessor-Bug:-EP\/10855069\">MSVC\n19.43.34808 Preprocessor Bug: <code>\/EP<\/code> Adds Unwanted <code>#pragma warning<\/code> Directives\n(Introduced in VS 2022 v17.13.x, Corrupts Preprocessed Files)<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Requires-clause-rejected-in-lambda-initi\/10837397\">Requires\nclause rejected in lambda initializing a variable template<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/False-positive-lifetime-code-analysis-wa\/10732359\">False\npositive lifetime code analysis warning C26849: Don&#8217;t dereference an invalid pointer: (lifetime.1).<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/C26822-false-positive-with-not_null\/10792869\">C26822\nfalse positive with not_null<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/cant-compile-with-valid-CTAD\/10855618\">can&#8217;t compile\nwith valid CTAD<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Type-always-prefered-over-value-when-usi\/10729382\">Type\nalways prefered over value when using qualified identifiers<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/std::bit_cast-does-not-work-for-bit-fiel\/10629958\">std::bit_cast\ndoes not work for bit-fields equal to whole type<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Bit-fields-with-widths-computed-via-temp\/10816564\">Bit\nfields with widths computed via template are treated as 1-bit fields instead starting with MSVC 19.40<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/OpenJDK-jdk17u-build-failure-with-VS20\/10860335\">OpenJDK\n(jdk17u) build failure with VS2022: error C2244: &#8216;TestEnableIfNested::sub1&#8217;: unable to match\nfunction definition to an existing declaration<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/C26815-false-positive-on-return-this;\/10863015\">C26815\nfalse positive on &#8220;return *this;&#8221; with assignment of std::optional member in member function.<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Trivial-template-argument-expressions-br\/10852233\">Trivial\ntemplate argument expressions broken in 14.44<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/False-positive-lifetime-code-analysis-wa\/10732367\">False\npositive lifetime code analysis warning C26847: Don&#8217;t return an invalid pointer (lifetime.4).<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Inconsistent-ESP-analysis-defects-after-\/10807134\">Inconsistent\nESP analysis defects after 17.10 update (Office)<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Breakpoint-line-mimatch-due-to-VC-comp\/10370838\">Breakpoint\nline mismatch due to VC++ compiler parse the line number wrongly, when a template class with alignas and\ncomma<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Microsoft-cl-compiler-successfully-compi\/10318070\">Microsoft\ncl compiler successfully compile code that has unnecessary template-id specified.<\/a><\/li>\n<\/ul>\n<h3 id=\"correctness-c-compiler-\">Correctness (C compiler)<\/h3>\n<ul>\n<li>C Make char types unique for <code>_Generic<\/code> operator\n<ul>\n<li><a href=\"https:\/\/developercommunity2.visualstudio.com\/t\/_Generic-char-signed-char-unsigned-cha\/1228885?preview=true\">_Generic\nchar, signed char, unsigned char are not distinct in C11<\/a><\/li>\n<\/ul>\n<\/li>\n<li>C dropped pointer dereference of a cast of a pointer to an array in some cases\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/What-is-the-reason-for-a-behavior-change\/10808170\">Incorrect\ncode generated with convoluted pointer casting<\/a><\/li>\n<\/ul>\n<\/li>\n<li>C compiler stack overflow on large array initialization\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/VS-2022-clexe-stack-overflows-when-pars\/10798104\">VS\n2022 cl.exe stack overflows when compiling zig2.c (~185 MB, ~4.1 M lines)<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In this update, we continue the tradition of bucketing bugs into helpful categories for you all to filter through along with even more notes from the compiler team as to what, exactly, was fixed. This blog is also complemented by the recent Pure Virtual C++ pre-conference talk by RanDair Porter; so please check out [&hellip;]<\/p>\n","protected":false},"author":39620,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[270,1,3951],"tags":[8,140,100,65,282,36],"class_list":["post-35448","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcement","category-cplusplus","category-frontend","tag-announcement","tag-c","tag-c-language","tag-compiler","tag-msvc","tag-vc"],"acf":[],"blog_post_summary":"<p>Introduction In this update, we continue the tradition of bucketing bugs into helpful categories for you all to filter through along with even more notes from the compiler team as to what, exactly, was fixed. This blog is also complemented by the recent Pure Virtual C++ pre-conference talk by RanDair Porter; so please check out [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/35448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/39620"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=35448"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/35448\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35994"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=35448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=35448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=35448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}