“Know how to solve every problem that has been solved.” “What I cannot create, I do not understand.” — Richard Feynman

Advanced C++

Courses

Modern C++ is built on a few load-bearing ideas that the language never states out loud. Each skill below is a short, problem-first lesson; when you want the full treatment, every node links down to a deep-dive page. Solve your way across the tree.

7 skills 16 questions ← whole tech tree

Lessons

0/7 complete
  1. 2Move semantics: stealing, not copyingMove Semantics · 6 min
  2. 3RAII: cleanup the compiler guaranteesRAII · 6 min
  3. 4Templates: recipes the compiler stamps outTemplates · 5 min
  4. 5Lambdas: functions that carry stateLambdas & Closures · 5 min
  5. 6Rule of Five, Rule of ZeroRule of Five / Zero · 5 min
  6. 7Smart pointers: ownership in the typeSmart Pointers · 6 min

Practice questions

Drill the whole bank; answer 13 to pass.

0/16 answered · 13 more to pass0%
Question 1 of 16
introMultiple choice

In int x = 5; int& r = x;, which expression below is an lvalue?

Go deeper ↓Pointers in C++

Skill map

Each node is a skill; an arrow means "learn this first." Deep-dive links go to the full pages.

Value Categories0%

lvalues, rvalues, xvalues — what they are and the one test that tells them apart (can you take its address?).

deep dive ↓Pointers in C++
Templates0%

Compile-time polymorphism: function and class templates, instantiation, and where the error messages come from.

Lambdas & Closures🔒

Anonymous functions that carry state. Capture by value vs reference, and the closure type behind the syntax.

▶ Locked — finish prerequisites
deep dive ↓Lambdas in C++
Move Semantics🔒

Stealing instead of copying. std::move as a cast, the move constructor, and the moved-from state.

▶ Locked — finish prerequisites
deep dive ↓Ownership by diff
RAII🔒

Resource lifetime tied to object lifetime. Deterministic destructors, LIFO teardown, exception safety for free.

▶ Locked — finish prerequisites
deep dive ↓Classes and objects
Rule of Five / Zero🔒

The five special members that move together — and the Rule of Zero that lets you write none of them.

▶ Locked — finish prerequisites
Smart Pointers🔒

unique_ptr, shared_ptr, weak_ptr — RAII and move semantics combined into ownership you can read off the type.

▶ Locked — finish prerequisites
deep dive ↓Ownership by diff