Visual Studio 17.12 is here and comes with a host of new features for C++ developers. We’ve made improvements across our toolchain, C++ Build Insights, Unreal Engine support, and more. This post gives a quick overview of what’s available; for all the details, see What’s New for C++ Developers in Visual Studio 2022 17.12 on the C++ blog.
Standard Library and MSVC Compiler
As always, you can find all the details about our STL work in the changelog on GitHub. Thanks to everyone who contributed changes for this release!
On the conformance side, we have finished the implementation of C++23’s P2286R8 Formatting Ranges and the multidimensional subscript operator (e.g. my_3d_span[i,j,k]). This release also comes with some new C++26 features:
- P2997R1 Removing The Common Reference Requirement From The Indirectly Invocable Concepts
- P0952R2 A New Specification For
generate_canonical()
- P2968R2 Make
std::ignore
A First-Class Object
You’ll find improvements to several debug visualizers, including those for mutex/recursive_mutex and move_iterator.
We added lifetimebound
attributes to min
, max
, clamp
, ranges::min
, ranges::max
, and ranges::clamp
, allowing MSVC code analysis and Clang –Wdangling
to detect dangling references in improper usage. See the documentation for warnings C26815 and C26816 for more information about lifetimebound annotations.
Finally, we improved the performance of several types and algorithms. The popcount()
function now uses a compiler intrinsic on ARM64. We further improved the vectorized implementations of the minmax_element()
and minmax()
algorithm families, and optimized the search()
and find_end()
algorithms. We also overhauled the implementations of condition_variable
and condition_variable_any
, which has knock-on effects on the timed_mutex
and recursive_timed_mutex
types.
Set Command Line Arguments for Unreal Engine Projects
For Unreal Engine projects, you can now set the command line arguments to pass to your application directly from the toolbar. This toolbar component will show up by default if you have the Game development with C++ workload installed. If you don’t see it, you can add it by right-clicking on the toolbar and selecting Set Arguments.
We’ll be adding support for this feature to non-UE projects in the future. See Pass command-line arguments while debugging on Microsoft Learn for documentation.
Open Folder for Unreal Engine uproject
We have added an additional entry point to open your Unreal Engine uproject with Visual Studio’s uproject support. You can now open your uproject directly from the File menu by selecting Open > Folder…. This will open your Unreal Engine project in Visual Studio.
For more information on how to use this feature, see the documentation on Microsoft Learn and our announcement blog post.
Change Signature Improvements
We have updated the Change Signature interface, allowing you to add, remove, and rearrange parameters in the parameter configuration section. Additionally, you can change their order by selecting and dragging them to a new position.
The access methods remain the same: press Ctrl+. to trigger the Quick Actions and Refactorings menu and select Change Signature.
C++ Build Insights
This release of Visual Studio comes with a bunch of quality-of-life improvements for C++ Build Insights.
You can now select a few files, run Build Insights on them, and see exactly how these files impact build performance:
You can filter results by project and file path:
Note that we now truncate paths to make them easier to read.
You can designate a folder to automatically store the reports so you can easily access them during your investigation.
Finally, you can now see a short description on how each tab of Build Insights can be used, along with a link to the documentation for a detailed explanation.
Summary
We hope this has given you a taste of what’s new. For all the details, see What’s New for C++ Developers in Visual Studio 2022 17.12 on the C++ blog.
We are very much interested in your feedback. The comments below are open. Feedback can also be shared through Visual Studio Developer Community. You can also reach us via email at visualcpp@microsoft.com.