Modern C++ Programming – Detailed Course Outline

Return to C++ and C Courses page
Copyright © 2013 - 2018, 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