Study Roadmap
8-week structured curriculum to master modern C++ from C++14 to C++23
1
Week 1-2: C++14/17 Foundation
Modern type system and compile-time computation
Topics Covered
- Generic Lambdas (auto parameters)
- Return type deduction
- Variable templates
- Binary literals & digit separators
- Relaxed constexpr
Practice Goals
- Refactor legacy functors to lambdas
- Convert new expressions to make_unique
- Use constexpr for compile-time constants
2
Week 3-4: C++17 Expression Evolution
Structured bindings and compile-time branching
Topics Covered
- Structured bindings
- if constexpr
- string_view
- optional, variant, any
- Inline variables
- Fold expressions
Practice Goals
- Replace std::tie with structured bindings
- Convert SFINAE to if constexpr
- Use string_view for read-only string parameters
- Model optional return values
3
Week 5-6: Memory & Resource Management
Smart pointers, move semantics, and RAII patterns
Topics Covered
- unique_ptr deep dive
- shared_ptr and weak_ptr
- Move semantics and perfect forwarding
- Rvalue references
- Rule of 0/3/5
- RAII patterns
Practice Goals
- Implement a RAII resource wrapper
- Convert raw pointers to smart pointers
- Implement move constructors
- Fix dangling reference bugs
4
Week 7-8: Functional Programming
Lambdas, STL algorithms, and functional patterns
Topics Covered
- Lambda captures and closures
- Generic lambdas (C++14)
- STL algorithms library
- Function objects and bind
- Higher-order functions
Practice Goals
- Replace loops with STL algorithms
- Create reusable predicate functions
- Implement custom algorithms
5
Week 9-10: C++20 Concepts & Constraints
Type constraints and template requirements
Topics Covered
- Concept definition and usage
- Standard library concepts
- Requires clauses
- Concept-based overloading
- Abbreviated function templates
Practice Goals
- Define custom concepts
- Replace SFINAE with concepts
- Create constrained algorithms
6
Week 11-12: C++20 Ranges & Views
Declarative data processing pipelines
Topics Covered
- Range concepts
- Views and lazy evaluation
- Pipeline operators
- Custom views
- Range algorithms
Practice Goals
- Convert loops to range pipelines
- Compose complex transformations
- Understand view lifetime
7
Week 13-14: C++23 Error Handling & Generators
Monadic error handling and coroutine sequences
Topics Covered
- std::expected
- Monadic operations
- std::generator
- Coroutines overview
- Lazy sequences
Practice Goals
- Convert exception-based code to expected
- Create generator functions
- Build error handling pipelines
8
Week 15-16: C++23 Advanced Features
mdspan, deducing this, and modern patterns
Topics Covered
- std::mdspan
- Multi-dimensional arrays
- Deducing this
- Recursive lambdas
- std::print and std::format
Practice Goals
- Implement matrix operations with mdspan
- Create recursive lambda utilities
- Replace iostream with std::print
Weekly Study Schedule
Monday-Wednesday
Read documentation and theory
Thursday-Friday
Practice with code examples
Weekend
Mini project and review