Microsoft C++ Team at ACCU 2021
Sy Brand and Erika Sweet from the Microsoft C++ Team will be presenting at ACCU 2021 this week. Come say hi in the virtual conference space and let us know if you have any questions about our talks, products, or anything else. We also recommend dropping by the #include <C++> table in the expo hall to learn more about their community.
Dynamic Polymorphism with Code Injection and Metaclasses – Sy Brand
Wednesday, 10 March 11:00 – 12:30 GMT
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, ergonomics and flexibility.
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’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.
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 metaclasses facilities which are proposed for inclusion in C++ along with a prototype implementation of the design based on the experimental metaclasses Clang fork.
Cross-Platform Pitfalls and How to Avoid Them – Erika Sweet
Thursday, 11 March 16:00 – 17:30 GMT
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.
Learn how to leverage CMake and its new CMakePresets.json to seamlessly build across operating systems and platforms. Untangle your dependencies with tools like vcpkg and Conan to avoid inconsistencies between system package managers. Debug your projects across multiple platforms with remote debugging. We’ll also explore how CMakePresets.json is supported on the command line, in Visual Studio, and in Visual Studio Code.