Transitioning to C++11
This three day course introduces the new features of ISO 14882 C++, known as C++11 and how they relate to the previous incarnation, C++98.
Dates:
Course Outline
Constructing objects:
- Class definition and objects
- Constructors
- Default constructors
- Initialisers
Resource Management:
- Overloading copy constructors
- Overloading assignment
- The Rule of the Big Three
- Disabling copying
Move Semantics:
- rvalues and lvalues
- Resource pilfering
- Move constructors
- Move assignment
Smart pointers:
- shared_ptr
- weak_ptr
- unique_ptr
Templates:
- Function templates
- Class templates
- The template build mechanism
Advanced templates:
- Template specialization
- Partial specialization
- Template inheritance
- Traits
- Meta-programming
STL containers:
- Container types
- Choosing a container
STL iterators:
- STL iterators
- The iterator model
- Special iterators
STL Algorithms:
- The algorithm concept
- Functors
- Adapter functions
- Unary and binary functors
- Binding
Function objects:
- Lambdas
- std::function
Threading:
- Thread-Runs-Function
- Thread-Runs-Functor
- Waiting for threads to finish
Mutual Exclusion:
- Race conditions
- std::mutex
- scope-locked idiom
Monitors:
- Signals and Condition objects
- The Monitor pattern
Futures and Promises:
- Deferred synchronous calls
- std::promise
- std::future
- Throwing exceptions
Course Overview
The C++11 standard marks a fundamental change to the C++ language. Bjarne Stroustrop, originator of C++, refers to it as “feeling like a completely new language”. The course looks at some of the changes to the language and how they affect the way we write C++ code. Attendees will gain a detailed overview of the new language features and how to apply them. The lectures will be supported by hands-on exercises.
Course Objectives:
- Provide a background into the C++ features that have changed.
- Provide an overview of the new language features.
- Understand how the new features change C++ programming style.
- Give practical experience of the new features.
- Give the confidence to apply these new concepts to your next project.
Delegates Will Learn:
- The new extensions to the C++ language
- Some of the performance impacts of the new features
- The extensions to the Standard Template Library
- Some of the new Standard Libraries
- An introduction to the new C++ threading model
Pre-requisites:
This course is not intended to be a comprehensive C++ course and it is expected that students will already have a solid working knowledge of C++98, in particular.
- Object Oriented design
- RAII
- The Standard Template Library
Ideally, attendees would have completed the Feabhas course C++-501 C++ for Embedded Developers.
Who Should Attend?
This course is aimed at experienced C++ developers who want to quickly understand the new facilities of C++11
Duration:
- Three days
Course Materials:
- Delegate handbook
- Delegate datakey
Related Courses:
- C++-501 C++ for Embedded Developers
- AC++-501 Advanced C++
- DP-402 Design Patterns in C++ for Embedded Systems
- RTOS-201 Fundamentals of Real-Time Operating Systems
Course Workshop:
At least 50% of the course is hands-on exercises. Students will be programming on a platform environment, either Windows or Linux, using an appropriate toolchain.


