{"id":3107,"date":"2018-08-28T20:15:14","date_gmt":"2018-08-28T18:15:14","guid":{"rendered":"https:\/\/mariusbancila.ro\/blog\/?p=3107"},"modified":"2018-08-29T23:31:58","modified_gmt":"2018-08-29T21:31:58","slug":"five-productivity-features-for-cpp-in-visual-studio-2017-158","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/","title":{"rendered":"Five productivity features for C++ in Visual Studio 2017 15.8"},"content":{"rendered":"<p>A couple of weeks ago, version 15.8 of Visual Studio 2017 was finally released. You can read <a href=\"https:\/\/blogs.msdn.microsoft.com\/visualstudio\/2018\/08\/14\/visual-studio-2017-version-15-8\/\" rel=\"noopener\" target=\"_blank\">here<\/a> about the new things available in this version. In this post, I will discuss five productivity features available for C++ development.<\/p>\n<p><!-- more --><\/p>\n<h3>Macro expansion in Quick Info tooltips<\/h3>\n<p>In Visual Studio you can see the definition of a macro (including comments from above) when you hover the caret over a symbol. But in this version, you can see the actual expansion of the macro that the preprocessor is doing.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro1.png\" alt=\"\" width=\"584\" height=\"112\" class=\"alignnone size-full wp-image-3108\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro1.png 584w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro1-300x58.png 300w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/p>\n<p>Obviously, this is useful for more complex macros, not simple values that you could already see from the preview of the definition. It doesn&#8217;t work in some situations: on <tt>#define<\/tt> statements, on the condition blocks of <tt>#ifdef<\/tt> statements, and when hovering on a macro that is used as an argument to a function-like macro. <\/p>\n<p>What could be even more useful is having these expansions actually evaluated if possible. Like in the example above, there is an arithmetical expression that can be fully evaluated and have the result displayed too. But, perhaps, that&#8217;s too much to ask for.<\/p>\n<p>See more: <a href=\"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2018\/05\/07\/macro-expansions-in-quick-info-tooltips\/\" rel=\"noopener\" target=\"_blank\">Macro Expansions in Quick Info Tooltips<\/a><\/p>\n<h3>Converting macros to constexpr<\/h3>\n<p>Macros are evil and you should try to avoid them as much as possible. Many macros can be actually replaced with a <tt>constexpr<\/tt>. Here are a couple examples:<\/p>\n<pre class=\"lang:c++ decode:true \" >#define BUFFER_SIZE 1024\r\n\r\n#define TESTBIT(lValue, lBits)       (((lValue) &amp; (lBits)) == (lBits))<\/pre>\n<pre class=\"lang:c++ decode:true \" >constexpr auto BUFFER_SIZE = 1024;\r\n\r\ntemplate&lt;typename T&gt;\r\nconstexpr auto TESTBIT(T lValue, T lBits) \r\n{ \r\n   return (((lValue) &amp; (lBits)) == (lBits)); \r\n}\r\n<\/pre>\n<p>In version 15.8, Visual Studio can help to convert macros to <tt>constexpr<\/tt> with a refactoring option.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro2.png\" alt=\"\" width=\"659\" height=\"182\" class=\"alignnone size-full wp-image-3110\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro2.png 659w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro2-300x83.png 300w\" sizes=\"auto, (max-width: 659px) 100vw, 659px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro3.png\" alt=\"\" width=\"845\" height=\"505\" class=\"alignnone size-full wp-image-3111\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro3.png 845w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro3-300x179.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro3-768x459.png 768w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro3-700x418.png 700w\" sizes=\"auto, (max-width: 845px) 100vw, 845px\" \/><\/p>\n<p>Not all macros are convertible to constant expressions and sometimes this operation may fail or may not produce the best conversion, in which case you can modify the result manually.<\/p>\n<p>See more: <a href=\"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2018\/06\/26\/convert-macros-to-constexpr\/\" rel=\"noopener\" target=\"_blank\">Convert Macros to Constexpr<\/a><\/p>\n<h3>Template IntelliSense<\/h3>\n<p>Template parameters can be annotated with information so that IntelliSense can be enabled in the template body. This annotation is user-specific, and therefore stored in the .vs folder and not shared on commits. Annotating the template parameters is done by clicking a new UI element (<strong><tt>&lt;T&gt;<\/tt><\/strong>) that appears next to a template definition when the caret is inside the template. With this extra info you get all the proper squiggles, quick info, parameter help, etc.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_template.png\" alt=\"\" width=\"900\" height=\"383\" class=\"alignnone size-full wp-image-3114\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_template.png 900w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_template-300x128.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_template-768x327.png 768w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_template-700x298.png 700w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>See more: <a href=\"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2018\/06\/26\/template-intellisense\/\" rel=\"noopener\" target=\"_blank\">Announcing Template IntelliSense<\/a><\/p>\n<h3>Just My Code stepping<\/h3>\n<p>In .NET it was possible to avoid going through non-user code when debugging with Step Into. This feature is now also available for C++. This means you can skip stepping into lots of library code such as STL code, or framworks such as MFC or ATL. You must have the Just My Code enabled from Tools > Options > Debugging > General > Enable Just My Code.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_jmc.png\" alt=\"\" width=\"912\" height=\"445\" class=\"alignnone size-full wp-image-3117\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_jmc.png 912w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_jmc-300x146.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_jmc-768x375.png 768w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_jmc-700x342.png 700w\" sizes=\"auto, (max-width: 912px) 100vw, 912px\" \/><\/p>\n<p>With this feature enabled, the debugger keeps track of which code is user code and which is not (code for which PDB information is available is considered user-code). When stepping into a function, execution will resume until another function that is marked as user code is reached or the current function completes its execution. Should you need to actually step into a non-user code function, then you can use the &#8220;Step Into Specific&#8221; command available in the editor&#8217;s context menu.<\/p>\n<p>See more: <a href=\"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2018\/06\/29\/announcing-jmc-stepping-in-visual-studio\/\" rel=\"noopener\" target=\"_blank\">Announcing C++ Just My Code Stepping in Visual Studio<\/a><\/p>\n<h3>Data breakpoints<\/h3>\n<p>Data breakpoints determine the debugger to stop the execution when a variable stored at a specific memory address changes its value. As a side note, you can only setup data breakpoints amounting to a total of 16 bytes. This could only be done from the Breakpoints window but is now available in the Locals, Autos, Watch, and Quickwatch windows, which will help to avoid switching between debugger windows. To do so, use the &#8220;Break When Value Changes&#8221; command from the window&#8217;s context menu.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_bp1.png\" alt=\"\" width=\"696\" height=\"355\" class=\"alignnone size-full wp-image-3120\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_bp1.png 696w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_bp1-300x153.png 300w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_bp2.png\" alt=\"\" width=\"456\" height=\"260\" class=\"alignnone size-full wp-image-3121\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_bp2.png 456w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_bp2-300x171.png 300w\" sizes=\"auto, (max-width: 456px) 100vw, 456px\" \/><\/p>\n<p>See more: <a href=\"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2018\/07\/25\/data-breakpoints-15-8-update\/\" rel=\"noopener\" target=\"_blank\">Data Breakpoints \u2013 Visual Studio 2017 15.8 Update<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A couple of weeks ago, version 15.8 of Visual Studio 2017 was finally released. You can read <a href=\"https:\/\/blogs.msdn.microsoft.com\/visualstudio\/2018\/08\/14\/visual-studio-2017-version-15-8\/\" rel=\"noopener\" target=\"_blank\">here<\/a> about the new things available in this version. In this post, I will discuss five productivity features available for C++ development.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[7,52,10],"tags":[451,562,458,529,505],"class_list":["post-3107","post","type-post","status-publish","format-standard","hentry","category-c","category-tools","category-visual-studio","tag-c","tag-productivity","tag-tools","tag-visual-studio","tag-vs2017"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\"c++,productivity,tools,visual studio,vs2017\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Five productivity features for C++ in Visual Studio 2017 15.8\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2018-08-28T18:15:14+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2018-08-29T21:31:58+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Five productivity features for C++ in Visual Studio 2017 15.8\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/#article\",\"name\":\"Five productivity features for C++ in Visual Studio 2017 15.8\",\"headline\":\"Five productivity features for C++ in Visual Studio 2017 15.8\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/vs2017158_macro1.png\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/#articleImage\",\"width\":584,\"height\":112},\"datePublished\":\"2018-08-28T20:15:14+02:00\",\"dateModified\":\"2018-08-29T23:31:58+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/#webpage\"},\"articleSection\":\"C++, Tools, Visual Studio, C++, productivity, Tools, Visual Studio, VS2017\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"position\":4,\"name\":\"C++\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/#listItem\",\"name\":\"Five productivity features for C++ in Visual Studio 2017 15.8\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/#listItem\",\"position\":5,\"name\":\"Five productivity features for C++ in Visual Studio 2017 15.8\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/\",\"name\":\"Five productivity features for C++ in Visual Studio 2017 15.8\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/08\\\/28\\\/five-productivity-features-for-cpp-in-visual-studio-2017-158\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2018-08-28T20:15:14+02:00\",\"dateModified\":\"2018-08-29T23:31:58+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Five productivity features for C++ in Visual Studio 2017 15.8","description":"","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/","robots":"max-image-preview:large","keywords":"c++,productivity,tools,visual studio,vs2017","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/#article","name":"Five productivity features for C++ in Visual Studio 2017 15.8","headline":"Five productivity features for C++ in Visual Studio 2017 15.8","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/08\/vs2017158_macro1.png","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/#articleImage","width":584,"height":112},"datePublished":"2018-08-28T20:15:14+02:00","dateModified":"2018-08-29T23:31:58+02:00","inLanguage":"en-US","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/#webpage"},"articleSection":"C++, Tools, Visual Studio, C++, productivity, Tools, Visual Studio, VS2017"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","position":4,"name":"C++","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/#listItem","name":"Five productivity features for C++ in Visual Studio 2017 15.8"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/#listItem","position":5,"name":"Five productivity features for C++ in Visual Studio 2017 15.8","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/","name":"Five productivity features for C++ in Visual Studio 2017 15.8","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2018-08-28T20:15:14+02:00","dateModified":"2018-08-29T23:31:58+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"Five productivity features for C++ in Visual Studio 2017 15.8","og:url":"https:\/\/mariusbancila.ro\/blog\/2018\/08\/28\/five-productivity-features-for-cpp-in-visual-studio-2017-158\/","article:published_time":"2018-08-28T18:15:14+00:00","article:modified_time":"2018-08-29T21:31:58+00:00","twitter:card":"summary","twitter:title":"Five productivity features for C++ in Visual Studio 2017 15.8"},"aioseo_meta_data":{"post_id":"3107","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-18 21:04:51","updated":"2025-12-12 07:50:13","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":2,"uagb_excerpt":"A couple of weeks ago, version 15.8 of Visual Studio 2017 was finally released. You can read here about the new things available in this version. In this post, I will discuss five productivity features available for C++ development.","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/tools\/\" class=\"advgb-post-tax-term\">Tools<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">Visual Studio<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">Tools<\/span>","<span class=\"advgb-post-tax-term\">Visual Studio<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">productivity<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">Tools<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">Visual Studio<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">VS2017<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">productivity<\/span>","<span class=\"advgb-post-tax-term\">Tools<\/span>","<span class=\"advgb-post-tax-term\">Visual Studio<\/span>","<span class=\"advgb-post-tax-term\">VS2017<\/span>"]}},"comment_count":"2","relative_dates":{"created":"Posted 8 years ago","modified":"Updated 8 years ago"},"absolute_dates":{"created":"Posted on August 28, 2018","modified":"Updated on August 29, 2018"},"absolute_dates_time":{"created":"Posted on August 28, 2018 8:15 pm","modified":"Updated on August 29, 2018 11:31 pm"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-O7","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/3107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=3107"}],"version-history":[{"count":10,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/3107\/revisions"}],"predecessor-version":[{"id":3125,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/3107\/revisions\/3125"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=3107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=3107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=3107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}