Wednesday 

Room 2 

16:20 - 17:20 

(UTC+02

Talk (60 min)

When C++ doesn't mean what it says

std::move doesn't move. const isn't always const. Function arguments accept things they shouldn't. Enumerations aren't really closed. Over the decades, C++ has accumulated a quiet collection of features that don't quite mean what a reasonable reading would suggest; and an equally quiet collection of workarounds, idioms, and library types that try to make them mean it.

C++
Technique
Language

This talk takes a tour through some of those gaps. We'll look at concrete examples where the language permits what programmers don't expect, walk through the historical workarounds (deleted overloads, SFINAE, concepts, sanitizers, contracts, guidelines), and ask a recurring question: when can these gaps be closed by libraries, and when do they require the language itself to change?


We won't solve C++. But we might leave with a clearer sense of which problems are accidents of history, which are deliberate trade-offs, and which are still genuinely unsolved.


Some familiarity with modern C++ is assumed.

Giuseppe D'Angelo

Senior Software Engineer at KDAB, Giuseppe has been using C++ for over 25 years. He is a long-time contributor to Qt, and an Approver in the Qt Project. His contributions in Qt range from containers and regular expressions to GUI, Widgets, and 3D. Giuseppe is also a member of the C++ committee, where he tries to make things simpler for the ordinary developer.