Arno Schoedl
The C++ rvalue lifetime disaster
#1about 3 minutes
The dual role of rvalue references in C++
Rvalue references were introduced for move semantics to avoid copies but are also used to manage the lifetime of temporary objects.
#2about 6 minutes
Why temporary lifetime extension fails in modern C++
The pre-C++11 feature for extending temporary object lifetimes does not work correctly with rvalue references, necessitating a custom macro to create a value or reference based on expression type.
#3about 6 minutes
How accessor methods cause rvalue amnesia
Standard accessor methods returning a const lvalue reference incorrectly bind to rvalues, losing critical lifetime information and leading to dangling references.
#4about 4 minutes
A proposal for fixing C++ reference binding rules
A proposed language fix using pragmas would introduce new, safer reference binding rules to prevent short-lived rvalues from binding to long-lived lvalue references.
#5about 3 minutes
Practical mitigations for rvalue lifetime issues today
Use custom macros to manage variable lifetimes, guard member accessors, and implement a correct ternary operator to work around the language's flawed binding rules.
#6about 1 minute
Managing C++ complexity with strong coding guidelines
The best way to manage the growing complexity of C++ is to establish strong internal coding guidelines and use custom libraries to standardize code patterns.
Related jobs
Jobs that call for the skills explored in this talk.
Matching moments
05:02 MIN
Understanding temporary objects and lifetime extension rules
An (In-)Complete Guide to C++ Object Lifetimes
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
07:52 MIN
Modern C++ evolution and the burden of backward compatibility
Eternal Sunshine of the Spotless Programming Language
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
07:50 MIN
Using modern language features for safer code
C++ in constrained environments
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
01:58 MIN
Implicit destruction and best practices for object lifetime
An (In-)Complete Guide to C++ Object Lifetimes
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
06:50 MIN
C++ availability, ecosystem, and backwards compatibility
101 brilliant things of C++
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
03:06 MIN
Defining objects and lifetimes in C++
An (In-)Complete Guide to C++ Object Lifetimes
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
08:47 MIN
Q&A on language design, Rust, and the future of C++
The Design and Evolution of C++
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
05:58 MIN
Reviewing common memory safety problems in other languages
A Love Letter to Rust
Unlock Moments
Create a free account to watch a limited number of Moments each month.
Upgrade to PRO for unlimited access to the full archive.
Upgrade to PRO for unlimited access to the full archive.
You have an account? Log in
Featured Partners
Related Videos
An (In-)Complete Guide to C++ Object Lifetimes
Jonathan Müller
C++ Features You Might Not Know
Jonathan Müller
C++ in constrained environments
Bjarne Stroustrup
101 brilliant things of C++
Andreas Fertig
The Design and Evolution of C++
Bjarne Stroustrup
Why Iterators Got It All Wrong — and what we should use instead
Arno Schödl
Guided Memory Management: Rust's Ownership Model
Stefan Baumgartner
A Love Letter to Rust
Rainer Stropek
Related Articles
View all articles



From learning to earning
Jobs that call for the skills explored in this talk.


Vesterling Consulting GmbH
€50-60K
UML
Software Architecture

Vesterling Consulting GmbH
€50-60K
UML
Software Architecture

EVIDENT GmbH
Remote
Senior
Continuous Delivery
Software Architecture
Continuous Integration

Randstad
Remote
Senior
Continuous Integration
Configuration Management



