JTC 1/SC 22/WG 23 C++ Vulnerability Discussions WG 23 N1554 April 13 2026 Participants Stephen Michell - convenor, SCC Richard Corden - Spain Erhard Ploedereder - liaison Peter Sommerlad - Switzerland Paul Preney - Canada Regrets Matt Butler - USA Loic Joly - AFNOR Actions: Issues addressed: Clauses addressed: 6.36 Ignored Error status and unhandled exceptions Significant updates for consistency and to address C++ changes for C++ 23 and C++ 26 All work is done on GitHub in the folder for ISO-IEC-JTC1-SC22-WG23-CPP. Please contact stephen.michell@maurya.on.ca for access. FROM THE CHAT 2026-04-13: 2026-04-13 09:44:50 From Peter Sommerlad to Everyone: will be there at 16:00 my time 2026-04-13 09:56:01 From Peter Sommerlad to Everyone: still eating my tea food 2026-04-13 09:57:09 From Stephen Michell to Everyone: OK. I have been editing 6.50 and 6.36 to simplify some language. 2026-04-13 10:38:12 From Peter Sommerlad to Everyone: Marking non-throwing functions `noexcept`{.cpp} that are not called from destructors or participate in move operations or `swap()` overloads should be carefully considered, because the compiler needs to prepare each call site of such a function for potential program termination, which can lead to increased binary size and run-time overhead. 2026-04-13 11:07:22 From Peter Sommerlad to Everyone: In case static objects with dynamic initialization cannot be avoided, prefer function-scope static objects to namespace-scope objects. 2026-04-13 11:29:51 From Paul Preney (Canada, Univ. of Windsor/SHARCNET) to Everyone: In the second paragraph, "Any attempt to propagate an exception from main{.cpp}, a thread entry point, or a function declared noexcept{.CPP} causes abnormal program termination." (of 6.36) 2026-04-13 11:31:56 From Peter Sommerlad to Everyone: Marking non-throwing functions noexcept{.cpp}, that are not called from destructors or participate in move operations or swap() overloads, should be carefully considered, because the compiler needs to prepare each call site of such a function for potential abnormal program termination. 2026-04-13 12:07:19 From Paul Preney (Canada, Univ. of Windsor/SHARCNET) to Everyone: In practice, implicit destructors are noexcept unless the class is "poisoned" by a base or member whose destructor is noexcept(false). 2026-04-13 12:07:37 From Richard Corden to Everyone: https://godbolt.org/z/3dxd8d6d9 2026-04-13 12:29:16 From Paul Preney (Canada, Univ. of Windsor/SHARCNET) to Everyone: std::terminate() is called by the C++ runtime when the program cannot continue for any of the following reasons: 1) An exception is thrown and not caught (it is implementation-defined whether any stack unwinding is done in this case). 2026-04-13 12:30:28 From Richard Corden to Everyone: https://eel.is/c++draft/except#terminate-2