{"id":2823,"date":"2011-08-24T20:40:00","date_gmt":"2011-08-24T20:40:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2011\/08\/24\/first-look-at-the-new-c-ide-productivity-features-in-visual-studio-11\/"},"modified":"2021-10-11T15:55:28","modified_gmt":"2021-10-11T15:55:28","slug":"first-look-at-the-new-c-ide-productivity-features-in-visual-studio-11","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/first-look-at-the-new-c-ide-productivity-features-in-visual-studio-11\/","title":{"rendered":"First Look at the New C++ IDE Productivity Features in Visual Studio 11"},"content":{"rendered":"<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/1526.image_128A4286.png\"><img decoding=\"async\" class=\"size-full wp-image-29568 alignleft\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/1526.image_128A4286.png\" alt=\"Image 1526 image 128A4286\" width=\"70\" height=\"92\" \/><\/a><\/p>\n<p>Hi! I am <strong>Sumit Kumar<\/strong>, a Program Manager on the Visual C++ team.<\/p>\n<p>Today I will talk to you about some of the exciting <em>new IDE functionality in the next version of Visual Studio<\/em> that will make you, the C++ developer, more productive with your daily code focused tasks. In this blog post you will get a preview of the new features that help with <i>code understanding<\/i> and <i>editing<\/i>. There will be more blog posts talking about other cool new features.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Code Understanding enhancements<\/h2>\n<h3>Semantic Colorization<\/h3>\n<p><strong>Semantic Colorization<\/strong> helps you quickly scan the code and infer more semantic meaning through enhanced visual feedback in the editor. In addition to the keywords, strings and comments, now other tokens like types, enumerations and macros are colorized; the parameters are in italics and so on. The screenshot below shows an example. Notice how the macros, types, function parameters etc. pop out and make understanding code so much easier.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3362.image_thumb_78B60C56.png\"><img decoding=\"async\" class=\"size-full wp-image-29572 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3362.image_thumb_78B60C56.png\" alt=\"Image 3362 image thumb 78B60C56\" width=\"640\" height=\"429\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3362.image_thumb_78B60C56.png 640w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3362.image_thumb_78B60C56-300x201.png 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>While there are only a few tokens that are colorized differently by default, around twenty different semantic tokens are exposed to the users as shown in the screenshot below.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4331.image_thumb_6528ACB5.png\"><img decoding=\"async\" class=\"size-full wp-image-29574 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4331.image_thumb_6528ACB5.png\" alt=\"Image 4331 image thumb 6528ACB5\" width=\"640\" height=\"372\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4331.image_thumb_6528ACB5.png 640w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4331.image_thumb_6528ACB5-300x174.png 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>You can customize your IDE to colorize these tokens differently. For example, you could choose to colorize local and global variables differently which could be a handy source understanding aid when the variables are identically named but defined in different scopes.<\/p>\n<p>&nbsp;<\/p>\n<h3>Reference Highlighting<\/h3>\n<p>Another great productivity feature that aids you in understanding code is <strong>Reference Highlighting<\/strong>. When you place your text cursor on a symbol, all the instances of that symbol in the file get highlighted. Only the true references are highlighted \u2013 for example, two symbols with same names in different scopes (say local vs. global) will not be highlighted at the same time. You can use <span style=\"font-family: Courier New;\">Ctrl+Shift+Up<\/span> and <span style=\"font-family: Courier New;\">Ctrl+Shift+Down<\/span> keys to move between the highlighted references. This means that you no longer have to invoke Find All References if you are simply looking for symbols within a file. The screenshot below shows how all the instances of the variable <span style=\"font-family: Courier New;\">cxExtentMax<\/span> inside the function body are highlighted when the cursor is placed on the one referenced in the call to <span style=\"font-family: Courier New;\">max()<\/span>. But the variable with same name defined outside the function scope is not highlighted.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/1614.image_7D4C1710.png\"><img decoding=\"async\" class=\"size-full wp-image-29569 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/1614.image_7D4C1710.png\" alt=\"Image 1614 image 7D4C1710\" width=\"560\" height=\"333\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/1614.image_7D4C1710.png 560w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/1614.image_7D4C1710-300x178.png 300w\" sizes=\"(max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>New Solution Explorer<\/h3>\n<p>There are a number of tool windows needed for common everyday tasks \u2013 for example, <span style=\"font-family: Courier New;\">Navigate To<\/span> is used for searching symbols and files, <span style=\"font-family: Courier New;\">Class View<\/span> and <span style=\"font-family: Courier New;\">Object Browser<\/span> are used for inspecting the members of an object, <span style=\"font-family: Courier New;\">Find All References<\/span> is used for, well, finding references, <span style=\"font-family: Courier New;\">Call Hierarchy<\/span> is used for finding the calls to and from a function etc. Imagine being able to do all of these operations from a single tool window without having to switch context or sacrifice additional precious screen real-estate. The new <strong>Solution Explorer<\/strong> combines most of the functionality of these tool windows into one place, itself! Of course, the other tool windows will still be available in Visual Studio, but the goal of the new Solution Explorer is to significantly reduce the need to invoke them for the most common scenarios. A detailed description of all of the new functionality provided by the versatile new Solution Explorer is a separate blog topic in itself, but here is a sampling:<\/p>\n<p>You can <b>expand<\/b> your files to see the fields, functions and types contained in the files and the members contained in the types.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/8154.image_1CFAF0D9.png\"><img decoding=\"async\" class=\"size-full wp-image-29582 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/8154.image_1CFAF0D9.png\" alt=\"Image 8154 image 1CFAF0D9\" width=\"393\" height=\"485\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/8154.image_1CFAF0D9.png 393w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/8154.image_1CFAF0D9-243x300.png 243w\" sizes=\"(max-width: 393px) 100vw, 393px\" \/><\/a><\/p>\n<p>It allows you to <b>search<\/b> your entire solution all the way to the members of individual classes.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4747.image_0392ED9F.png\"><img decoding=\"async\" class=\"size-full wp-image-29577 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4747.image_0392ED9F.png\" alt=\"Image 4747 image 0392ED9F\" width=\"383\" height=\"578\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4747.image_0392ED9F.png 383w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4747.image_0392ED9F-199x300.png 199w\" sizes=\"(max-width: 383px) 100vw, 383px\" \/><\/a><\/p>\n<p>You can <b>navigate back and forward<\/b> between different views of the Solution Explorer and can create <b>multiple instances<\/b> of Solution Explorer rooted at different nodes if needed. You can also <b>scope<\/b> the view to just a specific project or file or type.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3264.image_3C3D97AC.png\"><img decoding=\"async\" class=\"size-full wp-image-29570 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3264.image_3C3D97AC.png\" alt=\"Image 3264 image 3C3D97AC\" width=\"394\" height=\"175\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3264.image_3C3D97AC.png 394w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3264.image_3C3D97AC-300x133.png 300w\" sizes=\"(max-width: 394px) 100vw, 394px\" \/><\/a><\/p>\n<p>The view in <b>editor automatically syncs<\/b> with the view in Solution Explorer. Clicking on a symbol node in the Solution Explorer takes you to the definition of that symbol in the editor. You can also see the relationship between functions such as <span style=\"font-family: Courier New;\">Calls to<\/span>, <span style=\"font-family: Courier New;\">Calls from<\/span>, <span style=\"font-family: Courier New;\">References<\/span>, and <span style=\"font-family: Courier New;\">Inheritance<\/span> for functions and types from within the Solution Explorer.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/6472.image_thumb_7B2F1847.png\"><img decoding=\"async\" class=\"size-full wp-image-29581 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/6472.image_thumb_7B2F1847.png\" alt=\"Image 6472 image thumb 7B2F1847\" width=\"640\" height=\"293\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/6472.image_thumb_7B2F1847.png 640w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/6472.image_thumb_7B2F1847-300x137.png 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/6087.image_7A56B25D.png\"><img decoding=\"async\" class=\"size-full wp-image-29580 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/6087.image_7A56B25D.png\" alt=\"Image 6087 image 7A56B25D\" width=\"612\" height=\"278\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/6087.image_7A56B25D.png 612w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/6087.image_7A56B25D-300x136.png 300w\" sizes=\"(max-width: 612px) 100vw, 612px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Code Editing enhancements<\/h2>\n<p>The second category of C++ features helps you with editing code faster.<\/p>\n<h3>Automatic Display of IntelliSense Member List<\/h3>\n<p>In Visual Studio 2010 and previous releases, the IntelliSense member list dropdown had to be explicitly invoked either by typing <span style=\"font-family: Courier New;\">Ctrl+Space<\/span> or <span style=\"font-family: Courier New;\">Ctrl+J<\/span> or entering a scope resolution operator (::) or element selection operator (<span style=\"font-family: Courier New;\">.<\/span> or <span style=\"font-family: Courier New;\">-&gt;<\/span>). In the next version, Visual Studio will <strong>automatically shows the member list drop down<\/strong> as you type without the need to explicitly invoke it.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/5305.image_4BFD2CB0.png\"><img decoding=\"async\" class=\"size-full wp-image-29578 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/5305.image_4BFD2CB0.png\" alt=\"Image 5305 image 4BFD2CB0\" width=\"464\" height=\"261\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/5305.image_4BFD2CB0.png 464w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/5305.image_4BFD2CB0-300x169.png 300w\" sizes=\"(max-width: 464px) 100vw, 464px\" \/><\/a><\/p>\n<p>The automatic display of member list is smart \u2013 it does not aggressively display the member list when it does not make sense, for example when typing a declaration, there is no aggressive display of member list.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4722.image_60827C2E.png\"><img decoding=\"async\" class=\"size-full wp-image-29576 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4722.image_60827C2E.png\" alt=\"Image 4722 image 60827C2E\" width=\"155\" height=\"39\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4722.image_60827C2E.png 155w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4722.image_60827C2E-150x39.png 150w\" sizes=\"(max-width: 155px) 100vw, 155px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>Member List Filtering<\/h3>\n<p>Not only is the member list displayed automatically, it is also filtered as you type to shrink and show only the relevant members. So you can get a filtered result like the screenshot below just by typing two characters<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3757.image_673585B1.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-29573\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3757.image_673585B1.png\" alt=\"Image 3757 image 673585B1\" width=\"228\" height=\"229\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3757.image_673585B1.png 228w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3757.image_673585B1-150x150.png 150w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3757.image_673585B1-24x24.png 24w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3757.image_673585B1-48x48.png 48w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3757.image_673585B1-96x96.png 96w\" sizes=\"(max-width: 228px) 100vw, 228px\" \/><\/a> <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4341.image_120DE9C4.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-29575\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/4341.image_120DE9C4.png\" alt=\"Image 4341 image 120DE9C4\" width=\"214\" height=\"229\" \/><\/a><\/p>\n<p>Notice that <span style=\"font-family: Courier New;\">pb<\/span> is not a prefix or even a substring of the members in the list. The filtering uses a fuzzy logic to find the relevant members quickly. But if you do not like the fuzzy filtering, you can change it to prefix based, or prefix plus camel casing based or turn off the filtering completely.<\/p>\n<p>&nbsp;<\/p>\n<h3>Code Snippets<\/h3>\n<p><strong>Code Snippets<\/strong> help you quickly type the boilerplate code with just a couple of keystrokes. Here\u2019s how it works for a switch statement: as you start typing, the IntelliSense member list shows you the relevant code snippet that can be selected by pressing tab.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3348.image_18C0F347.png\"><img decoding=\"async\" class=\"size-full wp-image-29571 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3348.image_18C0F347.png\" alt=\"Image 3348 image 18C0F347\" width=\"554\" height=\"335\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3348.image_18C0F347.png 554w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/3348.image_18C0F347-300x181.png 300w\" sizes=\"(max-width: 554px) 100vw, 554px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/1108.image_6A676D99.png\"><img decoding=\"async\" class=\"size-full wp-image-29567 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/1108.image_6A676D99.png\" alt=\"Image 1108 image 6A676D99\" width=\"314\" height=\"229\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/1108.image_6A676D99.png 314w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/1108.image_6A676D99-300x219.png 300w\" sizes=\"(max-width: 314px) 100vw, 314px\" \/><\/a><\/p>\n<p>Then modify the expression in the switch statement or just press <span style=\"font-family: Courier New;\">Enter<\/span> and the entire skeleton of the switch statement is added for you; you only need to fill in the logic!<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/5315.image_65F0ECD2.png\"><img decoding=\"async\" class=\"size-full wp-image-29579 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/5315.image_65F0ECD2.png\" alt=\"Image 5315 image 65F0ECD2\" width=\"297\" height=\"354\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/5315.image_65F0ECD2.png 297w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2011\/08\/5315.image_65F0ECD2-252x300.png 252w\" sizes=\"(max-width: 297px) 100vw, 297px\" \/><\/a><\/p>\n<p>In addition to the <span style=\"font-family: Courier New;\">switch<\/span> statement, there are other snippets for basic code constructs available to you \u2013 like <span style=\"font-family: Courier New;\">if-else<\/span>, <span style=\"font-family: Courier New;\">for<\/span><span style=\"font-family: Segoe UI;\"> loop, etc. Each of the snippets saves you from unnecessary typing and lets you focus more on your logic, adding up to significant productivity gains over time!<\/span><\/p>\n<p>Additionally, the code snippets feature is extensible so you can also create your own snippets, which is as simple as creating a simple XML file and copying it at a certain location. You can also invoke the code snippets from the context menu in the editor and can either insert a snippet or can surround a selection of code with a code snippet (for example with a <span style=\"font-family: Courier New;\">#ifdef<\/span> statement).<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Summary<\/h2>\n<p>Many of these code understanding and editing features were requested by you, and are squarely intended to make you more productive with C++ development. Your continued feedback will help us make these features better before they ship. Please note that the descriptions and screenshots are from our early internal builds. <b>These features are still under development and could potentially change or not even be included in our final product<\/b>. In addition to these new features, we have done a lot of work on the IDE but I will save those for future blog posts.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/blogs.msdn.com\/b\/vcblog\/archive\/2011\/09\/06\/10206959.aspx\">[Keep learning about new features for C++ developers in Visual Studio 11]<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi! I am Sumit Kumar, a Program Manager on the Visual C++ team. Today I will talk to you about some of the exciting new IDE functionality in the next version of Visual Studio that will make you, the C++ developer, more productive with your daily code focused tasks. In this blog post you will [&hellip;]<\/p>\n","protected":false},"author":289,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[89,6,14],"class_list":["post-2823","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus","tag-editor","tag-ide","tag-intellisense"],"acf":[],"blog_post_summary":"<p>Hi! I am Sumit Kumar, a Program Manager on the Visual C++ team. Today I will talk to you about some of the exciting new IDE functionality in the next version of Visual Studio that will make you, the C++ developer, more productive with your daily code focused tasks. In this blog post you will [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/2823","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\/289"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=2823"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/2823\/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=2823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=2823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=2823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}