{"id":27728,"date":"2021-03-08T21:43:37","date_gmt":"2021-03-08T21:43:37","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=27728"},"modified":"2021-03-08T21:48:14","modified_gmt":"2021-03-08T21:48:14","slug":"microsoft-c-team-at-accu-2021","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/microsoft-c-team-at-accu-2021\/","title":{"rendered":"Microsoft C++ Team at ACCU 2021"},"content":{"rendered":"<p><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\">S<\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\">y Brand and Erika Sweet from the Microsoft C++ Team will be presenting at\u00a0<\/span><\/span><a class=\"Hyperlink SCXW74070230 BCX8\" href=\"https:\/\/flame.firebird.systems\/archer-yates\/ACCU2021\/MyProgrammes#Programme.ItemPage.104.0\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"TextRun Underlined SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW74070230 BCX8\" data-ccp-charstyle=\"Hyperlink\">ACCU 2021<\/span><\/span><\/a><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\"> this week. <\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun CommentStart SCXW74070230 BCX8\">Come\u00a0<\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW74070230 BCX8\">say<\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\">\u00a0hi\u00a0<\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\">in the virtual conference space<\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\">\u00a0and let us know if you have any questions about our\u00a0<\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\">talks, products, or anything else.<\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\">\u00a0<\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\">We also recommend dropping by the #include<\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\">\u00a0<\/span><\/span><span class=\"TextRun SCXW74070230 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW74070230 BCX8\">&lt;C++&gt; table in the expo hall to learn more about their community.\u00a0<\/span><\/span><span class=\"EOP SCXW74070230 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h4><span class=\"TextRun SCXW66306003 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun CommentStart SCXW66306003 BCX8\" data-ccp-parastyle=\"heading 2\">Dy<\/span><\/span><span class=\"TextRun SCXW66306003 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW66306003 BCX8\" data-ccp-parastyle=\"heading 2\">namic<\/span><\/span><span class=\"TextRun SCXW66306003 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW66306003 BCX8\" data-ccp-parastyle=\"heading 2\">\u00a0Polymorphism with Code Injection and\u00a0<\/span><\/span><span class=\"TextRun SCXW66306003 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SpellingErrorV2 SCXW66306003 BCX8\" data-ccp-parastyle=\"heading 2\">Metaclasses<\/span><\/span><span class=\"TextRun SCXW66306003 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW66306003 BCX8\" data-ccp-parastyle=\"heading 2\">\u00a0\u2013 Sy Brand<\/span><\/span><span class=\"TextRun SCXW66306003 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW66306003 BCX8\" data-ccp-parastyle=\"heading 2\">\u00a0<\/span><\/span><span class=\"EOP SCXW66306003 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h4>\n<p><b><span data-contrast=\"auto\">Wednesday, 10 March 11:00 \u2013 12:30 GMT\u00a0<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">Dynamic polymorphism in C++ has historically meant virtual functions and inheritance. However, these form only one possible design for solving this problem, and they bring several implications on performance,\u00a0<\/span><span data-contrast=\"none\">ergonomics<\/span><span data-contrast=\"none\">\u00a0and flexibility.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">Type erasure is another way to implement dynamic polymorphism, as demonstrated in several talks by Sean Parent and adopted in other languages, such as Rust&#8217;s trait objects. But implementing type erasing objects which provide ergonomic interfaces in C++ is cumbersome and error-prone, leading to a large family of types and libraries with subtly different semantics and lower adoption rates compared to inheritance.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:150,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">This talk will present a possible future design for interface-based type erasure in C++ that marries the convenience of inheritance to the benefits which it otherwise lacks. It will introduce the code injection and\u00a0<\/span><span data-contrast=\"none\">metaclasses<\/span><span data-contrast=\"none\">\u00a0facilities which are proposed for inclusion in C++ along with a prototype implementation of the design based on the experimental\u00a0<\/span><span data-contrast=\"none\">metaclasses<\/span><span data-contrast=\"none\">\u00a0Clang fork.\u202f<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:150,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<h4><span class=\"TextRun SCXW224824541 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW224824541 BCX8\" data-ccp-parastyle=\"heading 2\">Cross-Platform Pitfalls and How to Avoid Them<\/span><\/span><span class=\"TextRun SCXW224824541 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW224824541 BCX8\" data-ccp-parastyle=\"heading 2\">\u00a0\u2013\u00a0<\/span><\/span><span class=\"TextRun SCXW224824541 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW224824541 BCX8\" data-ccp-parastyle=\"heading 2\">Erika Sweet<\/span><\/span><span class=\"EOP SCXW224824541 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h4>\n<p><b><span data-contrast=\"auto\">Thursday<\/span><\/b><b><span data-contrast=\"auto\">, 1<\/span><\/b><b><span data-contrast=\"auto\">1<\/span><\/b><b><span data-contrast=\"auto\">\u00a0March 1<\/span><\/b><b><span data-contrast=\"auto\">6<\/span><\/b><b><span data-contrast=\"auto\">:00 \u2013 1<\/span><\/b><b><span data-contrast=\"auto\">7<\/span><\/b><b><span data-contrast=\"auto\">:30 GMT\u00a0<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">C++ cross-platform development is difficult. These difficulties are compounded by the fractured solution space, where every project seems to use a different combination of build systems, package managers, and diagnostic tools to address shared challenges. Join us for a discussion and demo of C++ cross-platform development centered on common pitfalls and widely adopted tooling.<\/span><\/p>\n<p><span data-contrast=\"none\">Learn how to leverage CMake and its new\u00a0<\/span><span data-contrast=\"none\">CMakePresets.json<\/span><span data-contrast=\"none\">\u00a0to seamlessly build across operating systems and platforms. Untangle your dependencies with tools like\u00a0<\/span><span data-contrast=\"none\">vcpkg<\/span><span data-contrast=\"none\">\u00a0and Conan to avoid inconsistencies between system package managers. Debug your projects across multiple platforms with remote debugging. We\u2019ll also explore how\u00a0<\/span><span data-contrast=\"none\">CMakePresets.json<\/span><span data-contrast=\"none\">\u00a0is supported on the command line, in Visual Studio, and in Visual Studio Code.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:150,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/presets.png\"><img decoding=\"async\" class=\"aligncenter wp-image-27729 size-full\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/presets.png\" alt=\"A screenshot of Visual Studio 2019. The toolbar contains 3 drop-downs: one for &quot;Target System&quot;, one for &quot;Configure Preset&quot;, one for &quot;Build Preset.&quot;\" width=\"648\" height=\"95\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/presets.png 648w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/03\/presets-300x44.png 300w\" sizes=\"(max-width: 648px) 100vw, 648px\" \/><\/a><span class=\"TextRun SCXW171235364 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW171235364 BCX8\">A preview of\u00a0<\/span><\/span><span class=\"TextRun SCXW171235364 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SpellingErrorV2 SCXW171235364 BCX8\">CMakePresets.json<\/span><\/span><span class=\"TextRun SCXW171235364 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW171235364 BCX8\">\u00a0integration in Visual Studio. Come\u00a0<\/span><\/span><span class=\"TextRun SCXW171235364 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW171235364 BCX8\">to Erika\u2019s session or find us at the virtual\u00a0<\/span><\/span><span class=\"TextRun SCXW171235364 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun CommentStart SCXW171235364 BCX8\">expo hall to learn more!<\/span><\/span><span class=\"EOP SCXW171235364 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:150,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<h4>Talk to us!<\/h4>\n<p><span class=\"TextRun Highlight SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\">In case you miss us at ACCU, you can always contact us directly <\/span><\/span><span class=\"TextRun Highlight SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\">via email (<\/span><\/span><a class=\"Hyperlink SCXW194730128 BCX8\" href=\"mailto:visualcpp@microsoft.com\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"TextRun Highlight Underlined SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\" data-ccp-charstyle=\"Hyperlink\">visualcpp@microsoft.com<\/span><\/span><\/a><span class=\"TextRun Highlight SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\">) and Twitter\u00a0<\/span><\/span><span class=\"TextRun Highlight SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\">(<\/span><\/span><a class=\"Hyperlink SCXW194730128 BCX8\" href=\"https:\/\/twitter.com\/visualc\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"TextRun Highlight Underlined SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\" data-ccp-charstyle=\"Hyperlink\">@VisualC<\/span><\/span><\/a><span class=\"TextRun Highlight SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW194730128 BCX8\" data-ccp-charstyle=\"Hyperlink\">,<\/span><\/span><span class=\"TextRun Highlight Underlined SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\" data-ccp-charstyle=\"Hyperlink\">\u00a0<\/span><\/span><a class=\"Hyperlink SCXW194730128 BCX8\" href=\"https:\/\/twitter.com\/TartanLlama\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"TextRun Highlight Underlined SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\" data-ccp-charstyle=\"Hyperlink\">@TartanLlama<\/span><\/span><\/a><span class=\"TextRun Highlight SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW194730128 BCX8\" data-ccp-charstyle=\"Hyperlink\">,<\/span><\/span><span class=\"TextRun Highlight Underlined SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\" data-ccp-charstyle=\"Hyperlink\">\u00a0<\/span><\/span><a class=\"Hyperlink SCXW194730128 BCX8\" href=\"https:\/\/twitter.com\/arecaplm\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"TextRun Highlight Underlined SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\" data-ccp-charstyle=\"Hyperlink\">@arecaplm<\/span><\/span><\/a><span class=\"TextRun Highlight SCXW194730128 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW194730128 BCX8\">).\u00a0<\/span><\/span><span class=\"EOP SCXW194730128 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:150,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sy Brand and Erika Sweet from the Microsoft C++ Team will be presenting at\u00a0ACCU 2021 this week. Come\u00a0say\u00a0hi\u00a0in the virtual conference space\u00a0and let us know if you have any questions about our\u00a0talks, products, or anything else.\u00a0We also recommend dropping by the #include\u00a0&lt;C++&gt; table in the expo hall to learn more about their community.\u00a0\u00a0 Dynamic\u00a0Polymorphism with [&hellip;]<\/p>\n","protected":false},"author":2953,"featured_media":27729,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[270,1],"tags":[],"class_list":["post-27728","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcement","category-cplusplus"],"acf":[],"blog_post_summary":"<p>Sy Brand and Erika Sweet from the Microsoft C++ Team will be presenting at\u00a0ACCU 2021 this week. Come\u00a0say\u00a0hi\u00a0in the virtual conference space\u00a0and let us know if you have any questions about our\u00a0talks, products, or anything else.\u00a0We also recommend dropping by the #include\u00a0&lt;C++&gt; table in the expo hall to learn more about their community.\u00a0\u00a0 Dynamic\u00a0Polymorphism with [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/27728","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\/2953"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=27728"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/27728\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/27729"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=27728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=27728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=27728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}