Agenda: C++: Advanced Topics¶
Introduction: A New Language To Me¶
Range Based for Loops¶
Tuple Unpacking (err, Structured Binding)¶
Duck Typing (err, auto
) Without A Duck¶
Brace Initialization¶
New OO keywords: override, final, default, delete¶
constexpr
, constinit
, consteval
¶
constinit
consteval
Functions: std::function<>
, Lambdas¶
Strongly Typed enum¶
Delegating Constructor¶
nullptr
¶
Moving, RValue References: Do We Want To Copy Sensors?¶
Moving: Usage¶
Moving: Implementation¶
Building upon the example from Move Semantics, Rvalue References which is
Pointless
It implements a pointless
String
class that does resource management
Do some initial live hacking
Live-code a sensor class for Linux and OneWire (using DS18B20 Temperature Sensor as Slave)
Show problems ⟶ copy!
⟶ rule of five
Inhibit copy
Implement move
Round it up: &&
is not always what you think 👎
🖕
Perfect Forwarding (a feature which shares the syntax with moving in that it uses
&&
, but is something completely different)
Type Erasure¶
Type erasure: what is that, and why?
Allocators¶
Ugh. Try to come up with something. Urgh.
C++ Pythonic Toolcase¶
std::any
std::optional
std::variant
Concepts¶
From Concepts
Multithreading¶
From Multithreading:
Outlook In >=20
¶
Miscellaneous¶
Attributes And The Like¶
[[nodiscard]]: Was bedeutet das?
[[fallthrough]]: Was bedeutet das?
noexcept
<algorithm>
Overview¶
std::transform
std::find
std::find_if
std::lower_bound
…
Miscellaneous Miscellaneous¶
const overloading
user-defined literals
std::string_view