"Type punning in modern C++" and "The Dawn of a New Error"

RSVPs öffnen am
Donnerstag, 28. November 2019
Bild des Veranstaltungsortes


This month we have the great pleasure of a double feature. We continue our tradition and welcome both Timur Doumler and Phil Nash for the last meetup of this year.

Title: Type punning in modern C++

Presenter: Timur Doumler. Timur is a C++ developer specialising in audio and music technology, active member of the ISO C++ committee, and part of the includecpp.org team. He is passionate about building communities, clean code, good tools, and the evolution of C++.

Abstract: Type punning is often used in C++ for fast floating-point math, deserialising C++ objects from a sequence of bytes, and other purposes. Popular techniques involve unions, reinterpret_cast, and memcpy. C++20 provides new useful tools, such as bit_cast. And there are proposals to provide even better control over C++ object creation in the future.

This talk is a comprehensive overview of all of these techniques. We will discuss when and how they can be used safely without causing undefined behaviour, what C++ does and does not allow you to do (and why), existing holes in the C++ language, and how to fix them. In the process, we will cover important C++ concepts such as object lifetime, value representations, and aliasing rules.

Title: The Dawn of a New Error

Presenter: Phil Nash. Developer Advocate at JetBrains, author of Catch/Catch2, co-host of cpp.chat, host of C++ London, chair and organiser of C++ on Sea.

Abstract: As a community we've tried many different ways to express, propagate and handle error conditions in our code over the years. Each seem to have different trade-offs, with none being perfect in all cases.

This presentation is the follow-up to my earlier talk, "Option(al) Is Not a Failure", where I surveyed existing error-handling approaches and score them against each other, leading up to the new proposal, p0709, "Zero-overhead deterministic exceptions".

We'll summarise some of that background so we're all on the same page, but in this talk we're going to dig into the proposal in more depth - and look at the supporting proposals, p1028 (std::error) and p1029 ([[move relocates]]) and others. We'll also comment similar mechanisms in other languages, notably Swift, to get an idea of how it might work out in practice.

19:00 -- Welcome by JetBrains
19:30 -- Talk by Timur Doumler
20:30 -- Break
20:45 -- Talk by Phil Nash
~21:45 -- Open Discussions
22:00 -- Official End

Host: JetBrains (https://www.jetbrains.com)