Introduction

Why C++17?

C++ is a challenging language to learn and fully understand, and some parts might be confusing for programmers.

One of the reasons for the lack of clarity might be the freedom given to the implementation/compiler. For example, some parts of the language are left vague to allow for more aggressive optimisations. Other difficulties can arise from the requirement to be compatible with C.

C++17 addresses some of the most common “holes” in the language.

What you’ll learn in this chapter:

  • What Evaluation Order is and why it might generate unexpected results
  • Copy elision guarantees in the language
  • Exceptions specifications as part of the type system
  • Memory allocations for (over)aligned data

Let’s get started with C++ 17’s stricter expression evaluation order.

Get hands-on with 1400+ tech skills courses.