Modern C++ Programming – Detailed Course Outline
Return to C++ and C Courses page
Copyright © 2013 - 2024, Anderson Software Group, Inc.
Section 1 - Modern C++ Features
- C++11, C++14 Updates
- Uniform Initialization
- Initializer Lists
- String Literals
- Using autoptr and nullptr
- Range Based Loops
- Alias Declarations
- Scoped Enumerations
- Using noexcept, decltype, constexpr
- C++17 Updates
Section 2 - Modern Class Design
- Initializer-List Constructors
- Delegating Constructors
- Using override and final
- Inheriting Constructors
- Containers of Containers
- Copy Semantics
- Rvalue References
- Move Semantics
- Using std::move
- Default Operations
- Deleted Functions
Section 3 - Smart Pointers
- Wrapping Dynamic Resources
- Allocation and Deallocation
- Why Smart Pointers?
- std::unique_ptr, std::make_unique
- std::shared_ptr, std::make_shared
- std::weak_ptr
- Custom Deleters
- Polymorphism with Smart Pointers
- Pimpl Idiom
- Pimpl with std::unique_ptr, std::shared_ptr
Section 4 - Modern C++ Library
- Using std::array and std::tuple
- Forward List Containers
- Unordered Containers
- Emplace Methods
- Reference Wrappers
- Move Iterators
- Move Algorithms
- Ratio Utility
- Chrono Library
Section 5 - Function Objects and Lambdas
- Why Use Function Objects?
- Binders and Adapters
- Lambda Syntax
- Lambda Types
- Generic Lambdas
- Capture by Value
- Capture by Reference
- Mutable Captures
- Member Function Captures
- Capture Initializations
- Closure Functions
- Why Are Lambdas Better?
Section 6 - Working with Templates
- Template Functions
- Argument Deduction
- Template Function Overloading
- Template Function Specialization
- Template Classes
- Template Type Parameters
- Template Template Parameters
- Member Templates
- Non-Type Template Parameters
- Full Class Specialization
- Partial Class Specialization
- Friend Function Templates
- Template Inheritance
- Template Recursion
- Variable Templates
- Variadic Templates
- Type Traits
Section 7 - Threads
- Using std::thread
- Creating Threads
- Thread Ids
- Joining Threads
- Exception Handling
- Using std::async
- Thread Return Values
- Launching Policies
- Futures
- Waiting and Polling
- Working with Exceptions
- Promises
- Packaged Tasks
- Shared Futures
Section 8 - Concurrency
- Why Concurrency?
- Data Access and Ordering
- Mutexes and Locks
- Condition Variables
- Atomic Variables
- Thread Safety Guidelines
Appendix
- C++17 Examples