RTD Training & Development

Modern C++ for C++ Programmers

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

Modern C++ for C++ Programmers

4 days hands-on £1,940+VAT

This course can be delivered over the web

Next scheduled date:
Tuesday May 7th, 2024 Enrol Now!

Covers the new features of C++ which were introduced since C++11, i.e. in C++11, C++14, C++17 and C++20



  • 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 & C++20 add 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 since the C++11 specification 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 introduced since C++11
  • 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 since C++11.


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