{"id":2323,"date":"2016-11-25T01:16:23","date_gmt":"2016-11-24T23:16:23","guid":{"rendered":"http:\/\/mariusbancila.ro\/blog\/?p=2323"},"modified":"2016-11-25T01:16:23","modified_gmt":"2016-11-24T23:16:23","slug":"new-standard-library-features-in-visual-c-2017-rc","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/","title":{"rendered":"New standard library features in Visual C++ 2017 RC"},"content":{"rendered":"<p>The new Visual C++ 2017, currently in release candidate phase, provides a series of updates and fixes to both the C++ compiler and the standard library. A comprehensive list of these improvements is available at <a href=\"https:\/\/docs.microsoft.com\/en-us\/cpp\/top\/what-s-new-for-visual-cpp-in-visual-studio\">What&#8217;s New for Visual C++ in Visual Studio 2017 RC<\/a>. <\/p>\n<p>In this article, I want to shortly look at the new standard library features from VC++ 2017.<\/p>\n<ul>\n<li><a href=\"http:\/\/en.cppreference.com\/w\/cpp\/utility\/any\">std::any<\/a> (available in header <tt>&lt;any&gt;<\/tt>) is a class that represents a type-safe container that can hold the value of any copy-constructible object. To read the value stored in an <tt>any<\/tt> variable you need to use the non-member function <tt>std::any_cast<\/tt>.\n<pre class=\"lang:c++ decode:true \" >std::any value{ 10 };   \/\/ int 10\r\nvalue = 10.0;           \/\/ double 10.0\r\nvalue = \"10\"s;          \/\/ string \"10\"\r\n\r\nif(value.has_value()) \r\n{\r\n   if (value.type() == typeid(std::string))\r\n   {\r\n      std::cout &lt;&lt; \"value=\" \r\n                &lt;&lt; std::any_cast&lt;std::string&gt;(value)\r\n                &lt;&lt; std::endl;\r\n   }\r\n}<\/pre>\n<\/li>\n<li><a href=\"http:\/\/en.cppreference.com\/w\/cpp\/utility\/optional\">std::optional<\/a> (available in header <tt>&lt;optional&gt;<\/tt>) is a class template that may or may not contain a value any moment in time. If it contains a value, it is allocated as part of the <tt>optional<\/tt> object, and therefore does not incur any memory overhead.\n<pre class=\"lang:c++ decode:true \" >auto string_part(\r\n   std::string const &amp; text,\r\n   std::optional&lt;int&gt; start,\r\n   std::optional&lt;int&gt; end)\r\n{\r\n   auto s = start.value_or(0);\r\n   auto e = end.value_or(text.length());\r\n   return text.substr(s, e - s);\r\n}\r\n\r\nauto lprint = [](auto const &amp; value)\r\n{\r\n   if (value.has_value())\r\n      std::cout &lt;&lt; *value &lt;&lt; std::endl;\r\n   else\r\n      std::cout &lt;&lt; \"[no value]\" &lt;&lt; std::endl;\r\n};\r\n\r\nstd::optional&lt;int&gt; value;\r\nlprint(value);\r\n\r\nvalue = 10;\r\nlprint(value);\r\n\r\nstd::cout &lt;&lt; string_part(\"marius\"s, {}, {}) &lt;&lt; std::endl;   \/\/ prints \"marius\"\r\nstd::cout &lt;&lt; string_part(\"marius\"s, {1}, {4}) &lt;&lt; std::endl; \/\/ prints \"ari\"\r\n<\/pre>\n<\/li>\n<li><a href=\"http:\/\/en.cppreference.com\/w\/cpp\/utility\/variant\">std::variant<\/a> (available in header <tt>&lt;variant&gt;<\/tt>) is a class template that represents a type-safe union. A variant can hold any number of alternatives, but they cannot be of type reference, array or void. The first alternative must be default constructible, because variants are default constructible and a default-constructed variant object contains a value of its first alternative. If the first alternative is not default-constructible, <tt>std::monostate<\/tt> (an empty, default-constructible class) can be used for that purpose. If it contains a value, it is allocated as part of the <tt>variant<\/tt> object, and therefore does not incur any memory overhead.\n<pre class=\"lang:c++ decode:true \" >std::variant&lt;int, double, std::string&gt; value;\r\nvalue = 10;    \/\/ int 10\r\nvalue = 10.0;  \/\/ double 10.0\r\nvalue = \"10\"s; \/\/ string \"10\"\r\n\r\nstd::cout &lt;&lt; std::get&lt;std::string&gt;(value) &lt;&lt; std::endl;  \/\/ prints \"10\"\r\nstd::cout &lt;&lt; std::get&lt;2&gt;(value) &lt;&lt; std::endl;            \/\/ prints \"10\"         \r\nstd::cout &lt;&lt; \"index = \" &lt;&lt; value.index() &lt;&lt; std::endl;   \/\/ prints 2\r\n\r\nstd::visit([](auto&amp;&amp; arg) {std::cout &lt;&lt; arg &lt;&lt; std::endl; }, value);\r\n<\/pre>\n<\/li>\n<li><a href=\"http:\/\/en.cppreference.com\/w\/cpp\/string\/basic_string_view\">std::basic_string_view<\/a> (available in header <tt>&lt;string_view&gt;<\/tt>) is a class template that represents a view of a contigous sequence of characters (defined by a pointer to the start of the sequence and a count). Several type aliases are available:\n<pre class=\"lang:c++ decode:true \" >using string_view    = basic_string_view&lt;char&gt;;\r\nusing u16string_view = basic_string_view&lt;char16_t&gt;;\r\nusing u32string_view = basic_string_view&lt;char32_t&gt;;\r\nusing wstring_view   = basic_string_view&lt;wchar_t&gt;;<\/pre>\n<p><tt>basic_string_view<\/tt> has an interface almost identical to <tt>basic_string<\/tt> so that switching from the later is as simple as possible. A typical useage of this class template is for function parameters as a replacement for constant references to <tt>basic_string<\/tt>.<\/p>\n<pre class=\"lang:default decode:true \" >auto string_part(\r\n   std::string_view text,\r\n   std::optional&lt;int&gt; start,\r\n   std::optional&lt;int&gt; end)\r\n{\r\n   auto s = start.value_or(0);\r\n   auto e = end.value_or(text.length());\r\n   return text.substr(s, e - s);\r\n}\r\n\r\nstd::cout &lt;&lt; string_part(\"marius\"s, {}, {}) &lt;&lt; std::endl;\r\nstd::cout &lt;&lt; string_part(\"marius\"s, { 1 }, { 4 }) &lt;&lt; std::endl;\r\n<\/pre>\n<\/li>\n<\/ul>\n<p>Additional new supported C++17 standard library features are:<\/p>\n<ul>\n<li><a href=\"http:\/\/en.cppreference.com\/w\/cpp\/utility\/apply\">std::apply<\/a> is a function template that invokes a specified callable object with a tuple of arguments.<\/li>\n<li><a href=\"http:\/\/en.cppreference.com\/w\/cpp\/utility\/make_from_tuple\">std::make_from_tuple<\/a> is a function template that creates an object by invocking its constructor with the members of a specified tuple.<\/li>\n<\/ul>\n<p>To have all these available the <tt>\/std::c++latest<\/tt> compiler switch must be used. This can be also set from the project properties, at C\/C++ > Language > C++ Language Support.<br \/>\n<a href=\"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2016\/11\/vclangsettings.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2016\/11\/vclangsettings.png\" alt=\"vclangsettings\" width=\"822\" height=\"558\" class=\"alignleft size-full wp-image-2332\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2016\/11\/vclangsettings.png 822w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2016\/11\/vclangsettings-300x204.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2016\/11\/vclangsettings-768x521.png 768w\" sizes=\"auto, (max-width: 822px) 100vw, 822px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The new Visual C++ 2017, currently in release candidate phase, provides a series of updates and fixes to both the C++ compiler and the standard library. A comprehensive list of these improvements is available at What&#8217;s New for Visual C++ in Visual Studio 2017 RC. In this article, I want to shortly look at the &#8230; <a title=\"New standard library features in Visual C++ 2017 RC\" class=\"read-more\" href=\"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/\" aria-label=\"Read more about New standard library features in Visual C++ 2017 RC\">Read more<\/a><\/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,1],"tags":[497,451,475,79,74,499,498],"class_list":["post-2323","post","type-post","status-publish","format-standard","hentry","category-c","category-uncategorized","tag-any","tag-c","tag-c17","tag-optional","tag-standard","tag-string_view","tag-variant"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"A brief overview of what is new for the standard library support in VC++ 2017 RC.\" \/>\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++,c++17,standard,any,optional,variant,string_view\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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=\"New standard library features in Visual C++ 2017 RC\" \/>\n\t\t<meta property=\"og:description\" content=\"A brief overview of what is new for the standard library support in VC++ 2017 RC.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-11-24T23:16:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-11-24T23:16:23+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"New standard library features in Visual C++ 2017 RC\" \/>\n\t\t<meta name=\"twitter:description\" content=\"A brief overview of what is new for the standard library support in VC++ 2017 RC.\" \/>\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\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/#article\",\"name\":\"New standard library features in Visual C++ 2017 RC\",\"headline\":\"New standard library features in Visual C++ 2017 RC\",\"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\\\/2016\\\/11\\\/vclangsettings.png\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/#articleImage\",\"width\":822,\"height\":558},\"datePublished\":\"2016-11-25T01:16:23+02:00\",\"dateModified\":\"2016-11-25T01:16:23+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/#webpage\"},\"articleSection\":\"C++, Uncategorized, any, C++, C++17, optional, standard, string_view, variant\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/#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\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/#listItem\",\"name\":\"New standard library features in Visual C++ 2017 RC\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/#listItem\",\"position\":5,\"name\":\"New standard library features in Visual C++ 2017 RC\",\"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\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/#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\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/\",\"name\":\"New standard library features in Visual C++ 2017 RC\",\"description\":\"A brief overview of what is new for the standard library support in VC++ 2017 RC.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2016\\\/11\\\/25\\\/new-standard-library-features-in-visual-c-2017-rc\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2016-11-25T01:16:23+02:00\",\"dateModified\":\"2016-11-25T01:16:23+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":"New standard library features in Visual C++ 2017 RC","description":"A brief overview of what is new for the standard library support in VC++ 2017 RC.","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/","robots":"max-image-preview:large","keywords":"c++,c++17,standard,any,optional,variant,string_view","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/#article","name":"New standard library features in Visual C++ 2017 RC","headline":"New standard library features in Visual C++ 2017 RC","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\/2016\/11\/vclangsettings.png","@id":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/#articleImage","width":822,"height":558},"datePublished":"2016-11-25T01:16:23+02:00","dateModified":"2016-11-25T01:16:23+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/#webpage"},"articleSection":"C++, Uncategorized, any, C++, C++17, optional, standard, string_view, variant"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/#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\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/#listItem","name":"New standard library features in Visual C++ 2017 RC"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/#listItem","position":5,"name":"New standard library features in Visual C++ 2017 RC","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\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/#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\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/","name":"New standard library features in Visual C++ 2017 RC","description":"A brief overview of what is new for the standard library support in VC++ 2017 RC.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2016-11-25T01:16:23+02:00","dateModified":"2016-11-25T01:16:23+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":"New standard library features in Visual C++ 2017 RC","og:description":"A brief overview of what is new for the standard library support in VC++ 2017 RC.","og:url":"https:\/\/mariusbancila.ro\/blog\/2016\/11\/25\/new-standard-library-features-in-visual-c-2017-rc\/","article:published_time":"2016-11-24T23:16:23+00:00","article:modified_time":"2016-11-24T23:16:23+00:00","twitter:card":"summary","twitter:title":"New standard library features in Visual C++ 2017 RC","twitter:description":"A brief overview of what is new for the standard library support in VC++ 2017 RC."},"aioseo_meta_data":{"post_id":"2323","title":null,"description":"A brief overview of what is new for the standard library support in VC++ 2017 RC.","keywords":[{"label":"c++","value":"c++"},{"label":"c++17","value":"c++17"},{"label":"standard","value":"standard"},{"label":"any","value":"any"},{"label":"optional","value":"optional"},{"label":"variant","value":"variant"},{"label":"string_view","value":"string_view"}],"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:07:10","updated":"2025-12-12 07:45:21","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":0,"uagb_excerpt":"The new Visual C++ 2017, currently in release candidate phase, provides a series of updates and fixes to both the C++ compiler and the standard library. A comprehensive list of these improvements is available at What&#8217;s New for Visual C++ in Visual Studio 2017 RC. In this article, I want to shortly look at the&hellip;","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\/uncategorized\/\" class=\"advgb-post-tax-term\">Uncategorized<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">Uncategorized<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/uncategorized\/\" class=\"advgb-post-tax-term\">any<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/uncategorized\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/uncategorized\/\" class=\"advgb-post-tax-term\">C++17<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/uncategorized\/\" class=\"advgb-post-tax-term\">optional<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/uncategorized\/\" class=\"advgb-post-tax-term\">standard<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/uncategorized\/\" class=\"advgb-post-tax-term\">string_view<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/uncategorized\/\" class=\"advgb-post-tax-term\">variant<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">any<\/span>","<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">C++17<\/span>","<span class=\"advgb-post-tax-term\">optional<\/span>","<span class=\"advgb-post-tax-term\">standard<\/span>","<span class=\"advgb-post-tax-term\">string_view<\/span>","<span class=\"advgb-post-tax-term\">variant<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 10 years ago","modified":"Updated 10 years ago"},"absolute_dates":{"created":"Posted on November 25, 2016","modified":"Updated on November 25, 2016"},"absolute_dates_time":{"created":"Posted on November 25, 2016 1:16 am","modified":"Updated on November 25, 2016 1:16 am"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-Bt","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/2323","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=2323"}],"version-history":[{"count":10,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/2323\/revisions"}],"predecessor-version":[{"id":2334,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/2323\/revisions\/2334"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=2323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=2323"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=2323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}