RTD Training & Development

C++17 for C++ Programmers

Call us on +44 (0)1225 66 72 72 or send us a message

C++17 for C++ Programmers

Note: During the Covid-19 crisis, courses will only be delivered over the web

4 days hands-on £1,940+VAT

This course can be delivered over the web

Next scheduled date:
Monday August 22nd, 2022 Enrol Now!

Can't wait that long? It may be possible to deliver this course at an earlier date. Contact us if you're interested
Covers the new features of C++ which were introduced in C++11, C++14 and C++17



  • Syntax enhancements
  • New types
  • New literal constructs
  • Variadic macros
  • Type-safe enumerations
  • 'auto' declarations
  • Trailing return types
  • Removed and deprecated features
  • Compiler support

Uniform Initialisation

  • Uniform initialisation syntax
  • Aggregate and non-aggregate initialisation
  • Adding support for initialiser lists

Range-Based 'for' Loops

  • Traversing containers
  • Using std::array
  • Range-based 'for' loops
  • Adding support for range-based traversal

Lambda Functions

  • Callable Entities
  • Lambda functions
  • Parameter and return types
  • Variable capture
  • Mutable lambdas

Rvalue References & Move Semantics

  • Copying temporary objects
  • Lvalues and rvalues
  • Rvalue references
  • Move constructors
  • Move assignments
  • Other move operations
  • Implicit operations
  • Standard library support for move semantics
  • Inheritance and delegation
  • Reference collapsing rules
  • Perfect forwarding

Template Enhancements

  • The 'using' keyword
  • Template instantiation
  • Static assertions
  • The type traits library
  • Conditional objects
  • Tuples
  • Variadic templates
  • Processing parameter packs

Class Enhancements

  • Default member initialisation
  • Inheriting and delegating constructors
  • Controlling and modifying default features
  • Override control


  • Starting threads
  • Thread handles
  • Thread operations
  • Passing arguments to threads
  • Retrieving results from threads
  • The threading memory model
  • Protecting shared data
  • Mutexes and locks
  • Thread synchronisation
  • Condition variables
  • Handling Exceptions
  • Futures and Promises
  • Using async()
  • Atomic operations

The Standard Library

  • Composition of the standard library
  • std::unique_ptr
  • Shared pointers and weak pointers
  • Unordered containers
  • Custom hashing
  • Forward lists
  • New algorithms
  • Regular expressions


The C++11 standard (formerly called C++0x) increased the power and efficiency of the language with a number of new language constructs and library enhancements. C++14 (formerly called C++1y) is a small extension over C++11, featuring mainly bug fixes, small improvements and generalisation of some C++11 features. C++17 adds more features to the language.

Of major interest to C++98 programmers are the new rvalue references, unordered containers and the multi-threading library, which enable a number of performance enhancements to be made.

This course covers all the major enhancements to the language and libraries in the C++11, C++14 and C++17 specifications and the majority of the other changes.

Participants acquire hands-on experience of the new language features by working through a wide selection of exercises.


On successful completion of this course, participants will be able to:

  • Recognise the new features in C++11, C++14 & C++17
  • Understand the benefits of the new features
  • Write efficient C++17 code utilising the new features
  • Utilise the new multi-threading facilities
  • Utilise the new features of the Standard Library


This course is aimed at programmers, analysts, engineers and technical managers who are already proficient in C++ program development and who wish to take advantage of the new features in C++11, C++14 and C++17.


This course assumes a working knowledge of C++98 up to the level covered in the C++ Programming course.

share buttons
share on twitter
share on linkedin
share on facebook
share by email