Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions source/algorithms.tex
Original file line number Diff line number Diff line change
Expand Up @@ -12279,15 +12279,15 @@

// \ref{numeric.sat}, saturation arithmetic
template<class T>
constexpr T add_sat(T x, T y) noexcept;
constexpr T saturating_add(T x, T y) noexcept;
template<class T>
constexpr T sub_sat(T x, T y) noexcept;
constexpr T saturating_sub(T x, T y) noexcept;
template<class T>
constexpr T mul_sat(T x, T y) noexcept;
constexpr T saturating_mul(T x, T y) noexcept;
template<class T>
constexpr T div_sat(T x, T y) noexcept;
constexpr T saturating_div(T x, T y) noexcept;
template<class T, class U>
constexpr T saturate_cast(U x) noexcept;
constexpr T saturating_cast(U x) noexcept;
}
\end{codeblock}

Expand Down Expand Up @@ -13431,10 +13431,10 @@
is performed as a mathematical operation with infinite range and then
it is determined whether the mathematical result fits into the result type.

\indexlibraryglobal{add_sat}%
\indexlibraryglobal{saturating_add}%
\begin{itemdecl}
template<class T>
constexpr T add_sat(T x, T y) noexcept;
constexpr T saturating_add(T x, T y) noexcept;
\end{itemdecl}

\begin{itemdescr}
Expand All @@ -13449,10 +13449,10 @@
whichever is closer to the value of $\tcode{x} + \tcode{y}$.
\end{itemdescr}

\indexlibraryglobal{sub_sat}%
\indexlibraryglobal{saturating_sub}%
\begin{itemdecl}
template<class T>
constexpr T sub_sat(T x, T y) noexcept;
constexpr T saturating_sub(T x, T y) noexcept;
\end{itemdecl}

\begin{itemdescr}
Expand All @@ -13467,10 +13467,10 @@
whichever is closer to the value of $\tcode{x} - \tcode{y}$.
\end{itemdescr}

\indexlibraryglobal{mul_sat}%
\indexlibraryglobal{saturating_mul}%
\begin{itemdecl}
template<class T>
constexpr T mul_sat(T x, T y) noexcept;
constexpr T saturating_mul(T x, T y) noexcept;
\end{itemdecl}

\begin{itemdescr}
Expand All @@ -13485,10 +13485,10 @@
whichever is closer to the value of $\tcode{x} \times \tcode{y}$.
\end{itemdescr}

\indexlibraryglobal{div_sat}%
\indexlibraryglobal{saturating_div}%
\begin{itemdecl}
template<class T>
constexpr T div_sat(T x, T y) noexcept;
constexpr T saturating_div(T x, T y) noexcept;
\end{itemdecl}

\begin{itemdescr}
Expand All @@ -13515,10 +13515,10 @@

\rSec3[numeric.sat.cast]{Casting}

\indexlibraryglobal{saturate_cast}%
\indexlibraryglobal{saturating_cast}%
\begin{itemdecl}
template<class R, class T>
constexpr R saturate_cast(T x) noexcept;
constexpr R saturating_cast(T x) noexcept;
\end{itemdecl}

\begin{itemdescr}
Expand Down
2 changes: 1 addition & 1 deletion source/support.tex
Original file line number Diff line number Diff line change
Expand Up @@ -823,7 +823,7 @@
// freestanding, also in \libheader{functional}, \libheader{type_traits}
#define @\defnlibxname{cpp_lib_robust_nonmodifying_seq_ops}@ 201304L // freestanding, also in \libheader{algorithm}
#define @\defnlibxname{cpp_lib_sample}@ 201603L // freestanding, also in \libheader{algorithm}
#define @\defnlibxname{cpp_lib_saturation_arithmetic}@ 202311L // freestanding, also in \libheader{numeric}
#define @\defnlibxname{cpp_lib_saturation_arithmetic}@ 202603L // freestanding, also in \libheader{numeric}
Copy link
Copy Markdown
Contributor

@StephanTLavavej StephanTLavavej Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#6738 by @tkoeppe also added __cpp_lib_freestanding_numeric for the original paper. The rationale for increasing __cpp_lib_saturation_arithmetic should apply to its freestanding counterpart, right? FYI @jwakely as you approved this PR a couple of weeks ago.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CC @ben-craig. IMO bumping of __cpp_lib_freestanding_meow should correspond to pure freestanding addition, so we possibly shouldn't touch them for renaming.

#define @\defnlibxname{cpp_lib_scoped_lock}@ 201703L // also in \libheader{mutex}
#define @\defnlibxname{cpp_lib_semaphore}@ 201907L // also in \libheader{semaphore}
#define @\defnlibxname{cpp_lib_senders}@ 202506L // also in \libheader{execution}
Expand Down
Loading