Embracing the **noexcept** Operator and Specifier *Safely*
The **noexcept** operator, in concert with the **noexcept** specifier, enables 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 important 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 some excruciating **noexcept** annoyances that exist in the C++ Standard today. Finally, we propose a fix for C++23 that will address several of the most egregious pitfalls and annoyances of these important features.
Background: Modern C++ offers a cornucopia of new features, not all of which are equally *safe*, especially when applied at scale. The material presented in this talk derives directly from our recently published book, *Embracing Modern C++ **Safely***, wherein we categorize the features of modern C++ as *safe*, conditionally *safe*, or *unsafe*.
John Lakos, author of Large-Scale C++ Software Design [Addison-Wesley, 1996], serves at Bloomberg LP in New York City as a senior architect and mentor for C++ software development worldwide. He is also an active voting member of the C++ Standards Committee’s Evolution Working Group. Previously, Dr. Lakos directed the design and development of infrastructure libraries for proprietary analytic financial applications at Bear Stearns. For 12 years prior, Dr. Lakos developed large frameworks and advanced ICCAD applications at Mentor Graphics, for which he holds multiple software patents. His academic credentials include a Ph.D. in Computer Science ('97) and an Sc.D. in Electrical Engineering ('89) from Columbia University. Dr. Lakos received his undergraduate degrees from MIT in Mathematics ('82) and Computer Science ('81). He is the author of Large-Scale C++ — Volume I: Process and Architecture [Addison-Wesley, 2020], the first book in a three-part series, and a coauthor of Embracing Modern C++ Safely [Addison-Wesley, 2021] with Vittorio Romeo along with Rostislav Khlebnikov and Alisdair Meredith.