Edocti
Advanced Technical Training for the Software Engineer of Tomorrow
Edocti Training

Advanced Modern C++

Advanced
21 h
4.8 (498 reviews)

Scheduled sessions

Starts: Sep 16, 2026 , 3 days
Live online Confirmed EN ● Instructor-led
€ 550 Enroll
Advanced Modern C++

Advanced techniques: Master widely used modern C++ features through intensive hands-on practice.

Dive deep into templates, lambdas, smart pointers, multithreading, and metaprogramming using concise, real-world examples.

Understand the runtime costs and apply best practices for integrating modern features into production codebases.

Gain practical experience: Spend ~70% of the course solving extensive labs and real-world scenarios.

How this helps: Confidently and effectively apply modern C++ standards in professional, high-performance projects.

Who it’s for: Developers with beginner-to-intermediate C++ knowledge looking to level up their skills.

By the end, you’ll be confident using advanced modern C++ across various domains.

Skills You Will Learn

Modern C++ (C++11–C++26) Templates & Metaprogramming Multithreading & Concurrency Smart Pointers & Memory Lambdas & Functional C++ STL & Ranges Under-the-Hood Performance CMake Basics

Curriculum

Elements of modern C++

  • User-defined literals
  • Improved string literals for non-trivial applications
  • Ranges & Views (C++20)
  • Coroutines (C++20)
  • Modules (C++20)
  • constexpr improvements (e.g., heap allocations, virtual calls)
  • Designated initializers (C++20)
  • Three-way comparison operator (<=>) (C++20)
  • Pattern matching (C++23 preview/ C++26)
  • Reflection & metaprogramming (C++26 preview)

Modern templates and metaprogramming

  • Variadic templates
  • Fold expressions (C++17)
  • Template variables
  • Concepts & Constraints (C++20)
  • Class Template Argument Deduction (CTAD) (C++17)
  • Non-type template parameters (C++20/23)
  • Using auto in templates (C++14/17/20)
  • constexpr metaprogramming
  • Type traits enhancements (e.g., std::is_scoped_enum, std::remove_cvref)

Practical functional programming

  • Lambdas
  • Parameters and return types
  • Capture expressions
  • Mutable lambdas
  • Generic lambdas
  • How lambdas work
  • Initialized lambda captures
  • std::function and std::invoke
  • Higher-order functions

Multithreading and parallelism

  • Basics: visibility, atomicity
  • Atomic operations in modern C++
  • std::atomic_ref (C++20)
  • std::jthread (scoped threads with auto-join)
  • Mutexes and locks
  • Condition variables: usage and real-world scenarios
  • Common gotchas in concurrent code
  • Asynchronous execution
  • futures / promises
  • packaged_task
  • std::async and policies
  • std::stop_token (C++20)
  • Parallel STL algorithms (C++17/20): e.g., transform_reduce, sort with execution policies

Smart pointers

  • unique_ptr
  • shared_ptr
  • weak_ptr
  • Advanced pitfalls and best practices

Miscellaneous modern C++

  • rvalues and lvalues
  • lvalue vs. rvalue references
  • Perfect forwarding
  • Move constructors and move assignment
  • Type deduction refinements (decltype(auto), scoped enums)
  • Enhanced constexpr capabilities
  • std::span (C++20)
  • Deprecating older features (std::bind, raw pointers in new code, old-style casts)
  • std::optional, std::variant, and std::any

Under the hood

  • Runtime cost of C++ features
  • Virtual and pure virtual functions
  • Object layout and addresses under (multiple) inheritance
  • Performance cost of coroutines, concepts, modules
  • Memory model evolution (std::atomic, std::pmr allocators)
  • Inlining (automatic vs. link-time): pros and cons
  • STL views & laziness

Optional modules

A concise CMake introduction (if time allows)

  • Build a small project with CMake
  • Start a new project or migrate an existing one from scratch

Course Day Structure

  • Part 1: 09:00–10:30
  • Break: 10:30–10:45
  • Part 2: 10:45–12:15
  • Lunch: 12:15–13:15
  • Part 3: 13:15–15:15
  • Break: 15:15–15:30
  • Part 4: 15:30–17:30

Did you attend this course?

Your feedback is invaluable to us. Please share your experience with us and help us improve this course for future participants.

Share your feedback

Want to find out more? We are here to help!

Or email us directly at training@edocti.com.