First Technology Transfer

Standard and Advanced Technical Training, Consultancy and Mentoring

Course CPP107 New features in C++11 and C++14 - An intensive programming course for existing C++ programmers

Duration: 3 Days

Intended Audience

This course is a hands-on C++11/C++14 training for experienced C++ developers. It aims to teach attendees the language changes and the standard library changes introduced in C++11 as well as the more recent changes from C++14.

Synopsis

The course explores the new C++11/C++14 language features via the use of demonstrations and examples, and practical lab projects. As fully featured C++14 compilers are not widely available or deployed, where features are mentioned that are only to be found in C++14 capable compilers this will be clearly pointed out. Since not every developer has a C++14-capable compiler yet, features only available in C++14 will be clearly pointed out in the course.

If there is time some of the more advanced C++11/14 features such as variadic templates and perfect forwarding and metaprogramming will be covered, depending on the interests and abilities of the attendees.troduced gently, and some of them are optional.

The course will cover lambdas, range based for loops, strongly typed enums, uniform initialization, and move semantics. It will also cover lambda functions, bind and function objects as well as template meta programming and multithreading.

Contents:

  • Introduction
    • Evolution of the C++ Programming Language
    • Introduction to the C++11 and C++14 standards
    • Summary of new features added in C++11 and C++14
    • Current compiler support ofr C++11 and C++14
  • C++11 - Language Features
    • Type inference ('auto')
    • 'decltype' and 'constexpr'
    • 'nullptr'
    • Alternative 'for'
    • Improved 'string'
    • RValue Reference and move semantics
    • Initialization improvements
      • Initializer lists
      • Uniform initialization
    • Pre-processor refinements
    • Strongly typed enums
    • Generalized Plain Old Data (POD) in C++11
    • Exception Safety and use of 'noexcept'
    • Alignment
  • C++11 Class Features
    • Improved/simplified class definition
    • Use of 'override', 'final', 'default', 'delete'
    • Delegating Constructors
  • C++11 Template Features
    • Improvements to Templates to improve and extent support
    • Alias Templates
    • Variadic Templates
    • 'extern' templates
  • C++11 Function Syntax
    • Lambda functions
    • Alternative function syntax and 'Function'
  • Core features of the Standard Library
    • Overview of the Standard Library
    • Containers and Container Adapters
    • Iterators and Iterator Adapters
    • Algorithms (Including use of algorithms to avoid use of conventional loops)
    • Function Objects (Functors)
    • Lambda Functions vs Functors
    • Idioms of STL and Boost Library
  • C++11 STL New Features
    • Deprecated Standard Library Features and their newer alternatives.
    • Smart Pointers
    • New Binding capabilities
    • Revised Iterators
    • Containers (Hash tables; tuple; etc.)
    • Regular Expressions
  • C++11 Memory Model
    • Threading and Synchronization
    • Creating and terminating threads
    • Synchronisation (Mutexes and Atomic operations)
    • Thread Local Storage
    • Tasks using 'async' and 'future'
  • C++14 Features
    • Generic Lambdas
    • Initialised Lambda capture
    • Relaxed 'constexpr' restrictions
    • Variable templates
  • C++ Future (C++17)
    • Review proposed new features for the next Standard C++.