C++11 Programming - upgrade course

This course has been superseded

We suggest the following instead:
C++ Programming

Course Description

This course is designed to upgrade delegates to C++11, the new C++ standard. C++11 is designed to make programming in C++ easier and more efficient for both the developer and the machine. The course covers all of the major features along with idioms for using them effectively, giving participants access to the full power of the new language and libraries. Over fifty percent of the course is spent on practical work.
3 Days
Contact us for pricing
 

Prerequisites

The course is designed for programmers with a working knowledge of C++98/03 who want to learn what the new language has to offer. The course lab work is designed to apply the theory presented in lectures to simple realistic programming examples.

Object creation and usage

• auto and decltype
• uniform initialisation
• in-class member initialisation
• controlling 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 functions
• 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

Basic concurrency

• 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 atomics
• 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

• 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

C++