First Technology Transfer

Standard and Advanced Technical Training, Consultancy and Mentoring

Course CPP106 - Introduction to New Features in C++11

Duration: 1 Day

Intended Audience

This C++11 lecture format training course aimed at existing C++ developers who need a fast paced overview of the new features of C++11.

Synopsis

The course covers the new C++11 language features such as lambdas, variadic templates, move semantics as well as new library features such as regular expressions and concurrency.

Contents:

  • Object creation and usage
    • auto and decltype
    • uniform initialisation
    • in-class member initialisationv
    • control of generated members
    • delegating and inheriting constructors
    • unions
    • initialiser lists and containers
    • trivial types and standard layout
    • user-defined literals
    • strong enums
    • explicit conversions
    • range-based for loops
  • Move semantics
    • lvalues, rvalues and temporaries
    • lvalue and rvalue references
    • move constructor and assignment
    • move versus copy
    • std::move
    • move-only types -std::unique_ptr
    • move-enabled containers and the STL
    • deduced "universal" references
    • reference collapsing rules
    • perfect forwarding
  • Variadic templates and lambdas
    • recursive variadic templates
    • variadic templates and forwarding
    • variadic templates as object generators
    • default function template arguments
    • factory functions
    • std::function and std::bind
    • std::shared_ptr and std::make_shared
    • emplace functionsv
    • lambdas
    • variable capture in lambdas
    • mutable lambdas
    • lambdas and the STL
  • Library and language additions
    • nullptr and std::nullptr_t
    • raw strings and UTF strings
    • additional character types
    • aliases and typedefs
    • namespace aliases
    • memory alignment
    • compile-time traits
    • std::enable_if
    • constexpr
    • noexcept
    • unordered containers
    • hash functions
    • std::forward_list
    • regular expressions
    • numerics
    • std::chrono and std::ratio
    • error codes
    • final and override
    • sizeof
    • extended friends
    • attributes
  • Concurrency and Resource Sharing
    • memory model
    • visibility, atomicity and ordering
    • volatile
    • std::future and std::promise
    • std::shared_future
    • background processing and std::async
    • std::atomic and simple types
    • compare and exchange (CAS)
    • memory ordering and atomicsv
    • std::thread, join and detach
    • std::ref and std::cref
    • std::thread and move semantics
    • std::packaged_task
    • exception safety and threads
    • threads and constexpr
  • More advanced concurrency and resource sharing
    • mutexes, recursive and timed mutexes
    • std::lock_guard and RAII
    • std::unique_lock and std::lock
    • try_lock
    • moving and adopting locks
    • condition variables and lambdas
    • user-defined locking
    • thread_local
    • std::call_once
    • memory fences
    • std::quick_exit and std::at_quick_exit
    • std::this_thread, yield and sleeping