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 :doc:/trainings/material/soup/cxx11/new-language-features/move/index`)
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#
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