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