Agenda: C++: A Thorough Overview (2024-06-03)¶
Introduction: A New Language To Me¶
Range Based for Loops¶
Tuple Unpacking (err, Structured Binding)¶
C++ Pythonic Toolcase¶
Brace Initialization (std::initializer_list<>
)¶
New OO keywords: override, final, default, delete¶
Functions: std::function<>
, Lambdas¶
Strongly Typed enum¶
Delegating Constructor¶
nullptr
¶
Moving, And RValue References (And Perfect Forwarding 👏)¶
Moving¶
Best explained in a live hacking session (from Move Semantics, Rvalue References)
Something Similar But Completely Different: Perfect Forwarding¶
&&
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)
Unit Testing With googletest
¶
Multithreading¶
From Multithreading:
Miscellaneous¶
Strings¶
std::string_view
: purpose, and usage
constexpr
, constinit
, consteval
¶
constinit
consteval
Code (And Project) Sanity¶
Best practices ⟶ C++ Core Guidelines |:laughing:|
const
, opinionated (was: why shoud I initialize members in an initializer list and not in the constructor body?)Memory leaks and uninitialized memory ⟶ valgrind
Metrics and static code analysis
Clean Code, Design Patterns¶
Is Software A Craft? Software Is A Craft! ⟶ Clean Code (overview/discussion only)
-
Singleton (but see “Code Sanity” above)
Strategy, and Dependency Inversion/Injection
Builder