Courses and Conferences

DTI Main Reception

Do you need help?

  • Gregersensvej 8
  • 2630 Taastrup
Google MapsApple MapsRejseplanen
  • Forskerparken Fyn, Forskerparken 10F
  • 5230 Odense M
Google MapsApple MapsRejseplanen
  • Teknologiparken Kongsvang Allé 29
  • 8000 Aarhus C
Google MapsApple MapsRejseplanen
  • NordsøcentretPostboks 104
  • 9850Hirtshals
Google MapsApple MapsRejseplanen
  • Gammel Ålbovej 1
  • 6092Sønder Stenderup
Google MapsApple MapsRejseplanen

Modern C++ Development

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, C++17 and C++20.

Participant Profile

This course is for developers with at least 3 - 6 month C++ programming experience.

Outcome

  • 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, C++17 and C++20

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
  • Movability
  • Reference binding rules
  • Support for movability in the STL
  • Improved initialization syntax
  • Inheriting and delegating constructors
  • Regular expressions
  • Date and time
  • Chrono
  • 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 and 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
What's New in C++17
  • Nested namespaces
  • Attributes
  • Fold expressions in variadic templates
  • Aggregate initialization with inheritance
  • Lambda enhancements
  • Template class type deduction
  • Inline variables
  • Library enhancements
  • Parallel algorithms
  • Miscellaneous enhancements and additions
What's New in C++20
  • Concepts
  • Ranges
  • Lambda improvements
  • The spaceship operator
  • Atomic smart pointers
  • Concurrency and synchronization improvements
  • Co-routines; Modules
  • The consteval and constinit keywords
  • Miscellaneous enhancements and additions

Instructor

Andy Olsen
Andy is a freelance instructor and consultant based in the UK, with more than 30 years experience in the industry across a wide range of technologies and platforms. Andy began his professional career in C and migrated through C++, Java, .NET and other languages and toolsets as the years passed by. Andy is currently actively involved in contemporary systems development techniques including microservice architecture, cloud-based systems, and containerisation.

Do you have any course related questions, please contact