Jonathan Müller


An (In-)Complete Guide To C++ Object Lifetimes

May 7, 2024 10:00 AM

A C++ program manipulates objects, but it is undefined behavior if you attempt to manipulate them while they are not alive. So let's do a deep dive into object lifetime.

When are objects created, and when are they destroyed? How does temporary lifetime extension come into play, and what changed there recently? What happens when you std::malloc memory and just pretend objects are there without creating anything? Or worse: You use mmap() to read shared memory. How do unions interact with constructors, strict aliasing, or the "common initial sequence"? What happens when you explicitly call the destructor and later re-use the same storage? What's the deal with std::launder, std::bit_cast, and std::start_lifetime_as?

This talk will answer all of those questions and much more. Jonathan will do that by looking at the C++ standard, old and new proposals, and compiler optimizations.

Starting from: $500

Unchain your mind at LambdaConf 2024

Buy tickets