Tehnici avansate: Explorezi caracteristici moderne C++ foarte folosite, prin practică hands‑on.
Intri în templates, lambdas, smart pointers, multithreading și metaprogramare cu exemple concise.
Înțelegi costurile la runtime și bunele practici pentru utilizarea corectă a feature‑urilor moderne.
Dobândești experiență practică prin laboratoare și scenarii reale (~70% hands‑on).
Cum te ajută acest curs: aplici eficient C++ modern în proiecte profesionale.
Cui i se adresează: conceput pentru dezvoltatori cu cunoștințe anterioare de C++ la nivel începător–intermediar.
La final vei folosi cu încredere C++ modern avansat în diverse domenii.
Curriculum
Elemente de C++ modern
- 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)
Șabloane moderne și metaprogramare
- 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)
Programare funcțională practică
- 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 și paralelism
- Bazele: visibility, atomicity
- Atomic operations in modern C++
- std::atomic_ref (C++20)
- std::jthread (scoped threads with auto-join)
- Mutexes and locks
- Condition variables: utilizare și scenarii din lumea reală
- Capcane frecvente în cod concurent
- 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
Diverse pentru C++ modern
- 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)
- Deprecarea caracteristicilor mai vechi (std::bind, raw pointers in new code, old-style casts)
- std::optional, std::variant, and std::any
Sub capotă
- 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
Module opționale
Introducere concisă în CMake (dacă timpul permite)
- Build a small project with CMake
- Start a new project or migrate an existing one from scratch
Structura zilei de curs
- Partea 1: 09:00–10:30
- Pauză: 10:30–10:45
- Partea 2: 10:45–12:15
- Prânz: 12:15–13:15
- Partea 3: 13:15–15:15
- Pauză: 15:15–15:30
- Partea 4: 15:30–17:30