{"id":27741,"date":"2021-03-10T06:02:16","date_gmt":"2021-03-10T06:02:16","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=27741"},"modified":"2021-03-11T19:29:18","modified_gmt":"2021-03-11T19:29:18","slug":"intellisense-improvements-in-visual-studio-2019","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/intellisense-improvements-in-visual-studio-2019\/","title":{"rendered":"IntelliSense Improvements in Visual Studio 2019"},"content":{"rendered":"<p>We\u2019ve made many great improvements to C++ IntelliSense over the course of the Visual Studio 2019 release. We\u2019ve collected a few of the highlights in case you are interested in upgrading to Visual Studio 2019 or just want to learn how to be more productive when writing C++ code. If you have followed our blog since the 2019 Previews, you may be familiar with some of these features already. We hope you find this collection helpful. If you want to try all these features out, please grab the latest release of <a href=\"https:\/\/visualstudio.microsoft.com\/downloads\/\">Visual Studio 2019<\/a>.<\/p>\n<p>Many of these features are rooted in community suggestions. If you have any suggestions or run into issues with Visual Studio, please let us know on <a href=\"https:\/\/developercommunity.visualstudio.com\/\">Developer Community<\/a>. Your feedback really does help us deliver a great product!<\/p>\n<h2>C++ Standards<\/h2>\n<p>We strive to make Visual Studio the best IDE for working with the latest language standards. That involves a lot of work in our compilers and standard library but is not complete without the corresponding IntelliSense in the IDE to back these new features up while you are editing your code.<\/p>\n<h3>C++20<\/h3>\n<p>C++20 includes great new features such as modules, coroutines, concepts, ranges, the three-way operator, designated initializers and many more. All these features are supported in the IDE by the IntelliSense features you know and love.<\/p>\n<p><strong><em>For instance: coroutine support:<\/em><\/strong><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Co-routine-Screenshot.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27742\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Co-routine-Screenshot.png\" alt=\"Co-routine Support in IntelliSense\" width=\"457\" height=\"433\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Co-routine-Screenshot.png 457w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Co-routine-Screenshot-300x284.png 300w\" sizes=\"(max-width: 457px) 100vw, 457px\" \/><\/a><\/p>\n<p>Most of these features deserve a blog post on their own, so here they are if you want to learn more:<\/p>\n<ul>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/a-tour-of-cpp-modules-in-visual-studio\/\">Modules<\/a><\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/c-coroutines-in-visual-studio-2019-version-16-8\/\">Coroutines<\/a><\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/c20-concepts-are-here-in-visual-studio-2019-version-16-3\/\">Concepts<\/a><\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/initial-support-for-c20-ranges\/\">Ranges<\/a><\/li>\n<\/ul>\n<h2>C++ Modernization<\/h2>\n<p>We want to make it as easy as possible to update your codebases to use the latest languages standards. One way to do this is with our code analysis, code tidying, and C++ linting tools. These work together and allow you to turn the dial in Visual Studio depending on how comprehensive you want to be in analyzing and updating your code. These features range from the very lightweight like our new C++ Linters that run inside the IntelliSense engine, to features like <a href=\"https:\/\/docs.microsoft.com\/en-us\/cpp\/code-quality\/clang-tidy\">clang-tidy<\/a> that bring in many more checks, and all the way up to the complete rulesets that MSVC\u2019s Code Analysis provides.<\/p>\n<h3>In-Editor Code Analysis<\/h3>\n<p>The Microsoft Visual C++ Compiler has had <a href=\"https:\/\/docs.microsoft.com\/en-us\/cpp\/code-quality\/code-analysis-for-c-cpp-overview\">extensive support for code analysis<\/a> for some time. However, before VS 2019, you needed to compile your code before you could see any warnings or errors from this comprehensive analysis. In the latest version of Visual Studio, code analysis runs in the background for any files you are editing and results are shown directly in the IDE\u2019s editor:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/In-editor-Code-Analysis.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27745\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/In-editor-Code-Analysis.png\" alt=\"Image In editor Code Analysis\" width=\"780\" height=\"218\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/In-editor-Code-Analysis.png 780w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/In-editor-Code-Analysis-300x84.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/In-editor-Code-Analysis-768x215.png 768w\" sizes=\"(max-width: 780px) 100vw, 780px\" \/><\/a><\/p>\n<p>You can <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/in-editor-code-analysis-in-visual-studio-2019-preview-2\/\">learn more about in-editor code analysis here<\/a>.<\/p>\n<h3>IntelliSense Linter<\/h3>\n<p>We introduced the IntelliSense C++ linter as a complement to the more comprehensive code analysis that now runs in the background. The IntelliSense linter gives instantaneous results for the most critical issues, instantly, as you type. Currently, the linter is focused on common C++ typos, common bugs such arithmetic and operator mismatches, performance issues, and security issues such pointer arithmetic problems.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/C-Linter.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27746\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/C-Linter.png\" alt=\"Image C Linter\" width=\"936\" height=\"322\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/C-Linter.png 936w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/C-Linter-300x103.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/C-Linter-768x264.png 768w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/a><\/p>\n<p>This complements the more comprehensive code analysis from the compiler. While code analysis is much more flexible and powerful than the linter, it also takes longer to provide results because the translation unit must be compiled first. The linter is now enabled by default in Visual Studio. You can <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/intellisense-code-linter-for-cpp\/\">learn more about the IntelliSense Linter here<\/a>.<\/p>\n<h3>C++ Concept IntelliSense<\/h3>\n<p>One of the great new features in C++20 is concepts. Visual Studio makes it easier than ever to create to create and use concepts in your code. In the first template in the code below we have defined a concept &#8216;is_cat&#8217; that defines the properties of a cat. In the second template we use that concept to constrain the types that can be passed to it. This is fully supported by IntelliSense automatically and you can see that the Member List contains the methods defined by the concept above (&#8216;pet&#8217; and &#8216;meow&#8217;).<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Concept-IntelliSense.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27767\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Concept-IntelliSense.png\" alt=\"Image Concept IntelliSense\" width=\"642\" height=\"299\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Concept-IntelliSense.png 642w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Concept-IntelliSense-300x140.png 300w\" sizes=\"(max-width: 642px) 100vw, 642px\" \/><\/a><\/p>\n<p>We didn&#8217;t need to provide any information to the IDE beyond the code and no types needed to be manually entered into the template bar (to the right of the second template). All the information instead comes from the concepts defined in the code.<\/p>\n<h3>Template IntelliSense<\/h3>\n<p>If you work with C++, you have no doubt encountered a great deal of templated code. Working with this in an IDE can be tricky because the IDE doesn\u2019t know exactly how these templates are going to be instantiated. The new Template IntelliSense Bar in Visual Studio 2019 helps solve this problem. Using the Template Bar, you can tell the IDE how your template will be used and receive full IntelliSense based on those types. If you place the cursor in any template, you will see the new template bar:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Template-IntelliSensepng.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27748\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Template-IntelliSensepng.png\" alt=\"Image Template IntelliSensepng\" width=\"541\" height=\"179\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Template-IntelliSensepng.png 541w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Template-IntelliSensepng-300x99.png 300w\" sizes=\"(max-width: 541px) 100vw, 541px\" \/><\/a><\/p>\n<p>You may have noticed the \u201cInstantiations\u201d item in the type dropdown below. Visual Studio can now scan your entire codebase to automatically provide suggestions on how the template may be used. You can <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/template-intellisense-improvements-for-visual-studio-2019-preview-2\/\">learn more about the Template Bar here<\/a>.<\/p>\n<h3>Perfect Forwarding IntelliSense (make_unique, make_shared, emplace, emplace_back)<\/h3>\n<p>One piece of community feedback that we have received has been to improve the IntelliSense for perfect forwarding templates in C++. We\u2019ve taken the first steps towards that by improving the way a few perfect forwarding templates in the STL are handled. In particular, make_unique, make_shared, emplace, and emplace_back.<\/p>\n<p>Here is how this looked before:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Perfect-Forwarding-Before.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27749\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Perfect-Forwarding-Before.png\" alt=\"Image Perfect Forwarding Before\" width=\"624\" height=\"89\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Perfect-Forwarding-Before.png 624w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Perfect-Forwarding-Before-300x43.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><\/p>\n<p>Notice how the parameter help doesn\u2019t list the actual parameters of your type. In the latest version of Visual Studio, it is much more convenient:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Perfect-Forwarding-After.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27750\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Perfect-Forwarding-After.png\" alt=\"Image Perfect Forwarding After\" width=\"260\" height=\"92\" \/><\/a><\/p>\n<p>We don\u2019t want to stop with just these four STL functions though. We are investigating ways to support your own perfect forwarding templates here as well. As always, we would love to hear your feedback about this. If you are interested in this feel free to open a suggestion on <a href=\"https:\/\/developercommunity.visualstudio.com\/\">Developer Community<\/a>.<\/p>\n<h2>C++ Productivity<\/h2>\n<p>In addition to language conformance and modernization tools, we also want Visual Studio to be the most productive IDE on the market to get work done. With that in mind, we have added a number of productivity focused IntelliSense features in 2019.<\/p>\n<h3>IntelliCode<\/h3>\n<p>IntelliCode uses machine learning to provide better code-completion recommendations. We added <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/?s=intellicode\">IntelliCode<\/a> support for C++ in Visual Studio 2019.\u00a0 By default, IntelliCode will give you recommendations on popular libraries such as STL.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Member-List-with-with-and-without-IntelliCode.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27752\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Member-List-with-with-and-without-IntelliCode.png\" alt=\"Image Member List with with and without IntelliCode\" width=\"624\" height=\"230\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Member-List-with-with-and-without-IntelliCode.png 624w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Member-List-with-with-and-without-IntelliCode-300x111.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><\/p>\n<p>We took this a step further in Visual Studio 2019 16.5 where we added the ability to <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/custom-ai-assisted-intellisense-for-your-team\/\">train IntelliCode on your own codebase<\/a>. This enables you to get smarter completion recommendations on your team\u2019s own types. To keep your Team Completion model up-to-date, you can <a href=\"https:\/\/github.com\/marketplace\/actions\/intellicode-team-completions\">automate the training process using GitHub Actions<\/a> or <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/intellicode\/custom-models#automatically-create-and-retrain-a-model-in-azure-pipelines\">Azure Pipelines<\/a>.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Custom-IntelliCode-Animation.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27753\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Custom-IntelliCode-Animation.gif\" alt=\"Image Custom IntelliCode Animation\" width=\"645\" height=\"243\" \/><\/a><\/p>\n<h3>Intelligent Member List Filtering<\/h3>\n<p>The Member List now takes more of your code\u2019s context into account when listing available members. For instance, if you invoke the member list on a const variable, all non-const variables will no longer be shown in the list. Partial matches are also now highlighted in bold in the Member List as well.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Member-List-Filtering.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27761\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Member-List-Filtering.gif\" alt=\"Image Member List Filtering\" width=\"456\" height=\"265\" \/><\/a><\/p>\n<p>You can <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/smarter-member-list-filtering-for-c\/\">learn more about Member List filtering here<\/a>.<\/p>\n<h3>Doxygen Support<\/h3>\n<p>Another feature we received feedback from the community about was that our customers wanted Doxygen support in the IDE in addition to XML doc comments. In Visual Studio 2019, Doxygen is now fully supported in C++ and will provide information in the Quick Info and Parameter Help UIs:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Doxygen-Support.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27755\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Doxygen-Support.png\" alt=\"Image Doxygen Support\" width=\"500\" height=\"311\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Doxygen-Support.png 500w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Doxygen-Support-300x187.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>Visual Studio does not default to Doxygen style comments, but they can be enabled in \u201cTools &gt; Options &gt; Text Editor &gt; C\/C++ &gt; Code Style &gt; General\u201d. Additionally, you can add your preferred type of doc comment to your project\u2019s .editorconfig file. You can <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/doxygen-and-xml-doc-comment-support\/\">learn more about Doxygen support here<\/a>.<\/p>\n<h3>IntelliSense Colorization and Quick Info Improvements<\/h3>\n<p>To help you be as productive as possible, we\u2019ve made several enhancements to the Quick Info, Parameter Help, and Member List UIs. The first thing you might notice is that these UIs are now fully colorized to match the editor:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Quick-Info-and-Member-List-Colorizaiotn.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27756\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Quick-Info-and-Member-List-Colorizaiotn.png\" alt=\"Image Quick Info and Member List Colorizaiotn\" width=\"624\" height=\"159\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Quick-Info-and-Member-List-Colorizaiotn.png 624w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Quick-Info-and-Member-List-Colorizaiotn-300x76.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><\/p>\n<p>Quick Info also now allows you to easily search for errors or function and type names online. You can now just hover over any red squiggle in the editor instead of searching through the error list:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Search-From-Quick-Info.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27759\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Search-From-Quick-Info.png\" alt=\"Image Search From Quick Info\" width=\"624\" height=\"96\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Search-From-Quick-Info.png 624w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Search-From-Quick-Info-300x46.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><\/p>\n<p>You can <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/quick-info-improvements-in-visual-studio-2019-colorization-and-search-online\/\">learn more about the enhancements to Quick Info here<\/a>.<\/p>\n<h3>Snippet Commit Options<\/h3>\n<p>We\u2019ve received feedback to make the commit options for snippets and the Member List more flexible. The defaults remain the same, but there are new options to choose between Enter, Space, and Tab now in \u201cTools Options &gt; Text Editor &gt; C\/C++ &gt; Advanced &gt; IntelliSense\u201d:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Snippet-Commit-Options.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27757\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Snippet-Commit-Options.png\" alt=\"Image Snippet Commit Options\" width=\"543\" height=\"84\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Snippet-Commit-Options.png 543w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/Snippet-Commit-Options-300x46.png 300w\" sizes=\"(max-width: 543px) 100vw, 543px\" \/><\/a><\/p>\n<h2>Platform Support and Extensibility<\/h2>\n<p>We have introduced new flexibility and extensibility in our IntelliSense engines to support a wide variety of platforms, such as Windows, Linux, and consoles. This includes the ability to <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/configure-intellisense-with-cmake-toolchain-files-in-visual-studio-2019-16-9-preview-2\/\">configure the IntelliSense engine with a CMake toolchain file<\/a>. These toolchains can be checked in to your code and each configuration can have a unique toolchain bringing an unprecedented amount of flexibility.<\/p>\n<p>Additionally, we have made several updates to the way <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/improvements-to-accuracy-and-performance-of-linux-intellisense\/\">IntelliSense is handled for remote machines<\/a>. This improves the accuracy of remote IntelliSense by automatically downloading system and library headers from the remote machine (or <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/wsl\/install-win10\">WSL<\/a>) and using them to provide full fidelity IntelliSense with the actual headers on the machine you are targeting.<\/p>\n<h2>Send Us Feedback<\/h2>\n<p>Please grab a copy of the <a href=\"https:\/\/visualstudio.microsoft.com\/downloads\/\">latest update to Visual Studio<\/a> and try it out. We would love to hear your feedback about Visual Studio. Please submit any suggestions to Developer Community.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We\u2019ve made many great improvements to C++ IntelliSense over the course of the Visual Studio 2019 release. We\u2019ve collected a few of the highlights in case you are interested in upgrading to Visual Studio 2019 or just want to learn how to be more productive when writing C++ code. If you have followed our blog [&hellip;]<\/p>\n","protected":false},"author":326,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-27741","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus"],"acf":[],"blog_post_summary":"<p>We\u2019ve made many great improvements to C++ IntelliSense over the course of the Visual Studio 2019 release. We\u2019ve collected a few of the highlights in case you are interested in upgrading to Visual Studio 2019 or just want to learn how to be more productive when writing C++ code. If you have followed our blog [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/27741","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\/326"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=27741"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/27741\/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=27741"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=27741"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=27741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}