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.
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.
