01auto and type inference
How the compiler deduces types, auto with references and const, and structured bindings.
45–60 minOpen lesson 02Smart pointers: std::unique_ptr
Exclusive ownership, make_unique, transferring ownership and returning from functions.
45–75 minOpen lesson 03Smart pointers: std::shared_ptr and std::weak_ptr
Shared ownership, reference counts, weak observers and breaking cycles.
60–90 minOpen lesson 04Move semantics: move constructor, move assignment and std::move
Transferring resources instead of copying, and the rule of five.
60–90 minOpen lesson 05Lambdas: capture lists and inline callbacks
Anonymous functions, [=] vs [&] vs explicit captures, and lambdas as callbacks.
60–90 minOpen lesson 06STL containers: vector, map, unordered_map, list
Choosing between the standard containers and their costs.
60–90 minOpen lesson 07STL algorithms: sort, find and for_each
Expressing intent with <algorithm> instead of hand-written loops.
45–75 minOpen lesson 08Iterators: input, output, forward, bidirectional and random-access
The five iterator categories and what each one allows.
45–75 minOpen lesson 09std::chrono: timing and durations
Clocks, time points, durations, and typed time literals.
45–60 minOpen lesson 10Multithreading: std::thread, std::mutex and std::lock_guard
Starting threads, joining them, data races and protecting shared data.
60–90 minOpen lesson 11Async programming: std::future and std::async
Running work in the background and collecting the result later.
45–75 minOpen lesson 12std::optional and std::variant
Values that may be missing, and values that are one of several types.
45–75 minOpen lesson 13std::function
Storing any callable, callback members and the cost of type erasure.
45–60 minOpen lesson 14Type traits
std::is_same, std::is_integral, enable_if and compile-time type questions.
45–75 minOpen lesson 15constexpr (C++17)
Computing values at compile time, constexpr functions and constexpr if.
45–60 minOpen lesson 16Function templates
Type parameters, deduction, explicit arguments and when templates fail to compile.
45–75 minOpen lesson 17Class templates
Generic containers and value types, template arguments and class template deduction (C++17).
60–90 minOpen lesson 18Template specialization
Full and partial specialization, and overriding the generic behaviour for one type.
45–75 minOpen lesson 19SFINAE basics
Substitution failure is not an error: enable_if and choosing overloads by type.
60–90 minOpen lesson 20Generic programming patterns
Policies, tag dispatch, CRTP and writing small generic algorithms.
60–90 minOpen lesson 21Basic CMakeLists
cmake_minimum_required, project, add_executable and an out-of-source build.
45–75 minOpen lesson 22Targets, linking and include directories
Libraries as targets, target_link_libraries and PUBLIC vs PRIVATE.
60–90 minOpen lesson 23Static vs shared libraries
add_library STATIC and SHARED, position-independent code, and runtime paths.
45–75 minOpen lesson 24Organizing multi-file projects
Folder layout, add_subdirectory, tests and a public include tree.
60–90 minOpen lesson 25Using external libraries
find_package, imported targets, FetchContent and pkg-config.
60–90 minOpen lesson 26Debugging with gdb
Debug builds, breakpoints, stepping, backtraces and watching variables.
60–90 minOpen lesson 27clang-tidy and static analysis
Finding bugs without running the code, and using compile_commands.json.
45–75 minOpen lesson