Move Semantics [2017 Class Archive]

“Move Semantics: Everything You Always Wanted to Know, But Were Afraid to Ask” is a one-day training course with programming exercises taught by Nicolai Josuttis. It is offered at the Sheraton Bellevue Hotel from 9AM to 5PM on Saturday, September 30th, 2017 (immediately after the conference). Lunch is included.

Course Description

C++11 introduced Move Semantics as its “marque feature.” This powerful feature has become a hallmark of modern C++ programming, but it complicates the language in many ways. If Scott Meyers and Herb Sutter can disagree on consequences (a topic that we’ll cover) then mere mortals can be forgiven for approaching Move Semantics with fear, uncertainty, and doubt. This one-day tutorial is valuable for those that are only beginning to learn about Move Semantics and is essential for those that are using it now.


Students are expected to have a basic knowledge of C++ including C++11.

Students are not required to bring any laptop. We will go through exercises together with the laptop of the presenter.

Course Topics

This tutorial starts with an overview of Move Semantics and covers all the details and practical consequences, including:

  • Move Semantics: what it is and what’s its purpose
  • The relationship between all of the special member functions
  • Dealing with move-only types
  • Why rvalues became prvalues
  • Universal references and forward<>
  • The auto&& in range-based for loops
  • The dawn of a new exception handling
  • How to deal with noexcept in practice
  • Why decay<> and other type traits are needed
  • All the mistakes and fixes we made with move semantics and noexcept in the standard
  • Changes regarding move with C++14 and C++17
  • Recommended patterns and idioms (including broken old C++ patterns)
  • Where and why Herb Sutter and Scott Meyers disagree

Course Instructor

Nicholia Josuttis

Nicolai Josuttis ( is an independent systems architect, technical manager, author, and consultant. He designs mid-sized and
large software systems for the telecommunication, traffic, finance, and
manufacturing industries.
He is well known in the C++ Community for speaking and writing with
authority about C++ (being the author of The C++ Standard Library and
C++ Templates) but is also an innovative presenter.
He is an active member of C++ standardization committee for almost 20
years now.