The `noexcept` operator, in concert with the `noexcept` specifier, allows generic code to choose a more efficient algorithm for types that have nonthrowing move and swap operations. These two C++11 features --- which have continued to evolve with every release of the language since C++11 --- are useful to high-performance computing yet, when overused, can profoundly jeopardize the maintainability of a large code base.
In this talk we will explore what the `noexcept` keyword means, what it offers, how it can be used effectively, the potential pitfalls one can encounter (and how to avoid them), and finally some excruciating annoyances regarding `noexcept` that exist in the C++ standard today. We intend to propose a fix for C++23 that will address those pitfalls and annoyances.
Background: Modern C++ offers a cornucopia of new features, not all of which are equally safe, especially when introduced into a large organization comprising legacy software and seasoned engineers proficient in early versions of the language. Over the past 18 months, I -- along with my coauthors -- have been privileged to work with some of the best minds on the planet to create a compendium of engineering wisdom from which virtually any C++ software engineer might benefit. The material presented in this talk derives directly from our about-to-be-published book, Embracing Modern C++ Safely.
ALL TALK SESSIONS CAN BE ACCESSED FROM THE MAIN LOBBY:
https://cppcon.digital-medium.co.uk/