Course Overview

Truly understanding C++11 and C++14 requires more than just familiarizing yourself with auto type declarations, move semantics, lambda expressions, concurrency support, etc. You also need to learn how to use those features effectively so that your software is correct, efficient, maintainable, and portable. That’s where this seminar comes in. It describes how to write truly great software using C++11 and C++14, i.e. using modern C++.

This course is based on Scott Meyers’ best-selling Effective Modern C++ book.

Key Learning Areas

  • Familiarity with how best practices in "old" C++ programming (i.e., C++98) change for modern C++.
  • Awareness of the often-subtle performance implications of modern C++ features and techniques.
  • An understanding of the relationships among std::move, std::forward, rvalue references, and universal references.
  • Techniques for writing clear, correct, effective lambda expressions.
  • Insights into the pros and cons of braced initialization, noexcept specifications, perfect forwarding, and smart pointer make functions.

Course Outline

  • Preliminaries
  • Moving to Modern C++
  • Smart Pointers
  • Rvalue References, Move Semantics, and Perfect Forwarding
  • Lambda Expressions
  • The Concurrency API

Who Benefits

Systems designers, programmers, and technical managers involved in the design, implementation, and maintenance of libraries and applications using C++11 and C++14.

Often combined with Moving Up to Modern C++: An Introduction to C++11/14 for C++ Programmers.

Prerequisites

Attendees should be familiar with the fundamental concepts introduced by C++11 (e.g., move semantics, multithreading, lambda expressions, smart pointers, etc.), but expertise is not required.