C++11 and C++14 New Features

C++11 and C++14 New Features


Designers and developers who are using, considering using, or wish to know about the expanded capabilities of C++11 and C++14 will find this course useful.


Attendees should be experienced with C++ and comfortable with its primary features (e.g., classes, templates, inheritance, STL, etc.). Familiarity with threading concepts (e.g., threads and mutexes) is helpful, but is not essential.


2 days.

Course Objectives

Thought you knew C++? Think again! The C++11 standard is a huge leap forward in the language and STL. Largely inspired by Boost, the C++11 standard introduces support for lambdas, multithreading, vastly improved object construction mechanisms, and much more beside. This course takes a deep and detailed look at all the new features on offer in C++11, along with the incremental additional changes in C++14.


  • Working with C++11 smart pointers
  • Functional programming in C++11
  • Defining and using lambda expressions
  • Using C++11 container classes
  • Implementing code applications in C++11
  • Using miscellaneous C++ language features
  • What's new in C++14

Course Content

General Language Enhancements in C++11
auto variables
Using auto in template definitions
Using decltype
New return syntax
Range-based for loops
Making your own classes iterable
Generalised constant expressions
Strongly-typed enums
Null pointers
Explicit overrides
Static asserts

Additional Language Features in C++11
Lvalues, rvalues, and rrvalues
Reference binding rules
Support for movability in the STL
Improved initialization syntax
Inheriting and delegating constructors
Regular expressions
Date and time
Explicit conversions
Variadic templates

Miscellaneous New Language Features in C++14
Function return type deduction
Alternate type deduction in declarations
Relaxed constexpr restrictions
Variable templates
Aggregate member initialization
Standard user-defined literals

Smart Pointers
Recap of smart pointer concepts
Shared pointers
Weak pointers
Unique pointers
Techniques and patterns

Introduction to Functional Programming
Overview of functional programming
Using std::bind to bind parameters
Using placeholders with for_each()
Passing by reference
Using std::function to represent free functions and member functions

Lambda Expressions
Overview of lambda expressions
Lambda syntax in C++11
Defining lambdas with arguments and a return value
Variable capture
Using lambdas with the STL
Performance considerations
Generic lambdas and lambda capture expressions in C++14

C++11 and C++14 Containers
Overview of new STL features
Using std::array
Using std::forward_list
Using unordered containers
Understanding hashing
Defining a custom hash function
Understanding buckets
In-place construction
Heterogeneous lookup in associative containers in C++14

C++11 and C++14 Multithreading
Creating simple threads using std::thread
Using lambda expressions with threading
Accessing the current thread
Using mutexes
Lock management and lock strategies
Atomic variables
Condition variables
Calling functions asynchronously
Working with future values
Shared mutexes and locking in C++14

Public Courses

On-Site Courses

Can't attend one of our public classes? Booking for multiple people?

All our courses are available on your site! Delivered for your staff, at your premises.

Contact us to find out more...