Embracing the noexcept Operator and Specifier Safely
14:00 - 15:30 Wednesday 6th April 2022 BST
Intermediate
Advanced
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 C11 features, which have continued to evolve with every release of the language since C11, 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 C23 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
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.