{"id":34181,"date":"2024-05-22T18:17:46","date_gmt":"2024-05-22T18:17:46","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=34181"},"modified":"2024-05-22T18:18:14","modified_gmt":"2024-05-22T18:18:14","slug":"whats-new-for-cpp-developers-in-visual-studio-2022-17-10","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/whats-new-for-cpp-developers-in-visual-studio-2022-17-10\/","title":{"rendered":"What&#8217;s New for C++ Developers in Visual Studio 2022 17.10"},"content":{"rendered":"<p>We are happy to announce that Visual Studio 2022 version 17.10 is now generally available! This post summarizes the new features you can find in this release for C++. You can download Visual Studio 2022 from the <a href=\"https:\/\/visualstudio.microsoft.com\/downloads\/\" target=\"_blank\" rel=\"noopener\">Visual Studio downloads page\u00a0<\/a>or upgrade your existing installation by following the\u00a0<a href=\"https:\/\/learn.microsoft.com\/en-us\/visualstudio\/install\/update-visual-studio?view=vs-2022\" target=\"_blank\" rel=\"noopener\">Update Visual Studio Learn page<\/a>.<\/p>\n<h2>Standard Library and Compiler<\/h2>\n<p>We have incremented the minor version number of the MSVC toolset from\u00a019.39\u00a0(VS 2022 v17.9) to\u00a019.40\u00a0(VS 2022 v17.10). For more details, and some ways in which this will affect projects that assume that MSVC versions are all 19.3X for Visual Studio 2022 releases, see the\u00a0<a href=\"https:\/\/aka.ms\/msvc-ver14.40\">MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10 blog post<\/a>.<\/p>\n<p>We\u2019ve made a host of changes to our standard library implementation, with the help of the community. As always, you can see the <a href=\"https:\/\/github.com\/microsoft\/STL\/wiki\/Changelog\">STL Changelog<\/a> for full details. We implemented C++26\u2019s <a href=\"https:\/\/wg21.link\/P2510R3\">P2510R3 Formatting Pointers<\/a>, which brings the set of format specifiers for pointers when using <code>std::format<\/code> more in line with those that already exist for integers. We also implemented a few smaller features from C++26 and C++23, such as <a href=\"https:\/\/wg21.link\/P2836R1\">P2836R1<\/a>, which makes <code>std::basic_const_iterator<\/code> act in a more natural way with respect to implicit conversions. On the performance side, we improved the vectorized implementations of <code>std::min_element<\/code>, <code>std::ranges::min<\/code> and friends, made the copy\/move assignment operators of <code>std::expected<\/code> trivial when expected, and more.<\/p>\n<h2>C++ Productivity and Game Development<\/h2>\n<p>You can now use Build Insights to view your template instantiation information. Template instantiation collection must be activated in Tools &gt; Options &gt; Build Insights.<\/p>\n<p><img decoding=\"async\" width=\"1197\" height=\"256\" class=\"wp-image-34182\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/recursive-template-instantiation.png\" alt=\"Recursive Template Instantiation\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/recursive-template-instantiation.png 1197w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/recursive-template-instantiation-300x64.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/recursive-template-instantiation-1024x219.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/recursive-template-instantiation-768x164.png 768w\" sizes=\"(max-width: 1197px) 100vw, 1197px\" \/><\/p>\n<p>Check out our <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/templates-view-for-build-insights-in-visual-studio-2\/\">blog post on Templates View<\/a> or our recording from Pure Virtual C++ for more details:<\/p>\n<p><iframe title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/68pOEQ5YA5s?si=bvviIud9zlGHzvci\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>You can now keep our Unreal Engine plugin needed for Unreal Engine Test Adapter running in the background, greatly reducing startup costs. This is an opt-in feature that can be activated via Tools &gt; Options &gt; Unreal Engine. Furthermore, we have added additional Unreal Engine Macros to be indented in accordance with the UE Code Style.<\/p>\n<h2>Cross-Platform<\/h2>\n<p>If you\u2019re targeting Linux, be sure to check out our video on our most recent development features for Linux from Pure Virtual C++:<\/p>\n<p><iframe title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/jZTMRvm8AwY?si=mzS86jQg4WS7Mia7\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h2>CMake Targets View<\/h2>\n<p>We have added support for pinning CMake targets in the CMake Targets View. There is a top-level folder now for Pinned Targets. You can pin any targets by right-clicking and selecting the\u00a0Pin\u00a0option in the context menu.<\/p>\n<p><img decoding=\"async\" width=\"546\" height=\"897\" class=\"wp-image-34183\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/pinning-a-cmake-target-via-the-context-menu.png\" alt=\"Pinning a CMake Target via the context menu\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/pinning-a-cmake-target-via-the-context-menu.png 546w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/pinning-a-cmake-target-via-the-context-menu-183x300.png 183w\" sizes=\"(max-width: 546px) 100vw, 546px\" \/><\/p>\n<p>You can also unpin any target in the Pinned Targets folder by selecting\u00a0Unpin.<\/p>\n<h2>Connection Manager<\/h2>\n<p>We introduced some UX updates and usability improvements to the Connection Manager. With these updates we provide a more seamless experience when connecting to remote systems and\/or debugging failed connections. Check out <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/usability-improvements-in-the-visual-studio-connection-manager\/\">our blog post<\/a> for more details.<\/p>\n<p><img decoding=\"async\" width=\"443\" height=\"490\" class=\"wp-image-34184\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/screenshot-of-the-updated-connect-to-remote-system.png\" alt=\"Screenshot of the updated Connect to Remote System dialog with a failed connection error. The error is displayed above the fields in an info bar and the Host Name and Port field are highlighted and labelled as &quot;may be incorrect&quot;. The Connect button is enabled.\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/screenshot-of-the-updated-connect-to-remote-system.png 443w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/screenshot-of-the-updated-connect-to-remote-system-271x300.png 271w\" sizes=\"(max-width: 443px) 100vw, 443px\" \/><\/p>\n<h2>Core Editor<\/h2>\n<h2>View and Address Pull Request Comments<\/h2>\n<p>You can now view your GitHub and Azure DevOps pull request comments directly in your working file in Visual Studio. Enable the feature flag, &#8220;Pull Request Comments,&#8221; in Options &gt; Environment &gt; Preview Features and checkout the pull request branch to get started.<\/p>\n<p><img decoding=\"async\" width=\"705\" height=\"168\" class=\"wp-image-34185\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screen-shot-of-a-computer-description-automatic.png\" alt=\"A screen shot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screen-shot-of-a-computer-description-automatic.png 705w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screen-shot-of-a-computer-description-automatic-300x71.png 300w\" sizes=\"(max-width: 705px) 100vw, 705px\" \/><\/p>\n<h2>Generated Pull Request Descriptions<\/h2>\n<p>Similar to our generated\u00a0<a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/write-your-git-commits-with-github-copilot\/\">Git commit message feature<\/a>, you can now get a first draft for your pull request description created by GitHub Copilot. You&#8217;ll need to verify you have an active GitHub Copilot subscription. Try it out by clicking the &#8216;Add AI Generated Pull Request Description&#8217; sparkle pen icon within the Create a Pull Request window. Please share your feedback on this feature\u00a0<a href=\"https:\/\/aka.ms\/GeneratedPRDescriptions\">here<\/a>.<\/p>\n<p><img decoding=\"async\" width=\"670\" height=\"438\" class=\"wp-image-34186\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-description-automatica.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-description-automatica.png 670w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-description-automatica-300x196.png 300w\" sizes=\"(max-width: 670px) 100vw, 670px\" \/><\/p>\n<h2>Image Hover Preview<\/h2>\n<p>If you hover over the path to an image, Visual Studio will now give you a small preview of the image itself, along with the size of the image in pixels and bytes. The size is capped to 500px wide and high.<\/p>\n<p><img decoding=\"async\" width=\"946\" height=\"240\" class=\"wp-image-34187\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-description-automatica-1.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-description-automatica-1.png 946w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-description-automatica-1-300x76.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-description-automatica-1-768x195.png 768w\" sizes=\"(max-width: 946px) 100vw, 946px\" \/><\/p>\n<h2>New Text Formatting Options<\/h2>\n<p>You can now choose italic, bold, strikethrough, or underline styles for text formatting in the Options &gt; Environment &gt; Fonts and Colors settings:<\/p>\n<p><img decoding=\"async\" width=\"1351\" height=\"446\" class=\"wp-image-34188\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-screen-description-aut.png\" alt=\"A screenshot of a computer screen Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-screen-description-aut.png 1351w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-screen-description-aut-300x99.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-screen-description-aut-1024x338.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-screenshot-of-a-computer-screen-description-aut-768x254.png 768w\" sizes=\"(max-width: 1351px) 100vw, 1351px\" \/><\/p>\n<h2>Creating Conditional Breakpoints and Tracepoints from Expressions<\/h2>\n<p>You can now create a conditional breakpoint or tracepoint directly from an expression in your source code from the right-click menu. This works on property or field names and values from autos, locals, watch windows, or DataTips:<\/p>\n<p><img decoding=\"async\" width=\"671\" height=\"796\" class=\"wp-image-34189\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34181-8.png\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34181-8.png 671w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34181-8-253x300.png 253w\" sizes=\"(max-width: 671px) 100vw, 671px\" \/><\/p>\n<h2>Attach to Process Dialog Revamp<\/h2>\n<p>The Attach to Process dialog has been improved for better functionality and user-friendliness. You can now easily switch between tree and list views, organize processes better with collapsible sections, and select code types with a simplified combobox. Moreover, the \u201cSelect\/Track Window&#8221; feature is now easier to use, allowing two-way tracking: selecting a process highlights its window, and clicking on a window selects its process.<\/p>\n<p><img decoding=\"async\" width=\"1194\" height=\"895\" class=\"wp-image-34190\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34181-9.png\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34181-9.png 1194w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34181-9-300x225.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34181-9-1024x768.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34181-9-768x576.png 768w\" sizes=\"(max-width: 1194px) 100vw, 1194px\" \/><\/p>\n<h2>GitHub Copilot<\/h2>\n<p>We have unified the experience from the GitHub Copilot and Copilot Chat extensions and shipped them directly in Visual Studio. To install it, install the GitHub Copilot component in the Visual Studio Installer:<\/p>\n<p><img decoding=\"async\" width=\"1379\" height=\"319\" class=\"wp-image-34191\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/screenshot-of-the-visual-studio-installer-the-git.png\" alt=\"Screenshot of the Visual Studio Installer. The GitHub Copilot component is highlighted with an orange outline.\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/screenshot-of-the-visual-studio-installer-the-git.png 1379w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/screenshot-of-the-visual-studio-installer-the-git-300x69.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/screenshot-of-the-visual-studio-installer-the-git-1024x237.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/screenshot-of-the-visual-studio-installer-the-git-768x178.png 768w\" sizes=\"(max-width: 1379px) 100vw, 1379px\" \/><\/p>\n<p>To use it, you\u2019ll need an active GitHub Copilot subscription, and you can find the interface in the top-right corner of Visual Studio.<\/p>\n<p><img decoding=\"async\" width=\"394\" height=\"259\" class=\"wp-image-34192\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/copilot-in-action.png\" alt=\"Copilot in action\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/copilot-in-action.png 394w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/copilot-in-action-300x197.png 300w\" sizes=\"(max-width: 394px) 100vw, 394px\" \/><\/p>\n<h2>Send us your feedback<\/h2>\n<p>We are very much interested in your feedback to continue to improve this experience. The comments below are open. Feedback can also be shared through\u00a0<a href=\"https:\/\/developercommunity.visualstudio.com\/cpp\" target=\"_blank\" rel=\"noopener\">Visual Studio Developer Community<\/a>. You can also reach us on Twitter (<a href=\"https:\/\/twitter.com\/visualc\" target=\"_blank\" rel=\"noopener\">@VisualC<\/a>), or via email at\u00a0<a href=\"mailto:visualcpp@microsoft.com\">visualcpp@microsoft.com<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are happy to announce that Visual Studio 2022 version 17.10 is now generally available! This post summarizes the new features you can find in this release for C++. You can download Visual Studio 2022 from the Visual Studio downloads page\u00a0or upgrade your existing installation by following the\u00a0Update Visual Studio Learn page. Standard Library and [&hellip;]<\/p>\n","protected":false},"author":706,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[270,1],"tags":[],"class_list":["post-34181","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcement","category-cplusplus"],"acf":[],"blog_post_summary":"<p>We are happy to announce that Visual Studio 2022 version 17.10 is now generally available! This post summarizes the new features you can find in this release for C++. You can download Visual Studio 2022 from the Visual Studio downloads page\u00a0or upgrade your existing installation by following the\u00a0Update Visual Studio Learn page. Standard Library and [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/34181","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\/706"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=34181"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/34181\/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=34181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=34181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=34181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}