From 6354380c2a09c62bce309f4a7e24bd47eb6074b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johel=20Ernesto=20Guerrero=20Pe=C3=B1a?= Date: Mon, 6 Sep 2021 18:00:19 -0400 Subject: [PATCH] [utility.requirements] Add front matter on exception propagation under [exception.propagation] --- source/lib-intro.tex | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 51e39e8fe5..c813fd20c8 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1427,6 +1427,8 @@ \ref{hash.requirements} describes the requirements on hash function objects. \ref{allocator.requirements} describes the requirements on storage allocators. +\ref{exception.propagation} +describes additional requirements and guarantees when propagating exceptions. \rSec3[utility.arg.requirements]{Template argument requirements} @@ -2218,6 +2220,24 @@ other than \tcode{value_type} are complete types. \end{itemize} +\rSec3[exception.propagation]{Exception propagation requirements} + +\pnum +Some functions defined in the \Cpp{} standard library +impose requirements and guarantees when an exception is thrown from a described evaluation. +Unless stated otherwise, +exceptions thrown due to evaluating the subexpression +that implements the described evaluation +up to the complete evaluation of its enclosing full-expression +also have those requirements and guarantees imposed. +\begin{note} +This includes exceptions thrown as part of +initializing parameters, +evaluating default arguments, and +destroying temporaries (including discarded-value expressions) +\iref{expr.call}. +\end{note} + \rSec2[constraints]{Constraints on programs} \rSec3[constraints.overview]{Overview}