namespace std {
template<class T>
constexpr T add_sat(T x, T y) noexcept;
}
概要
飽和加算 x + y を計算する。
テンプレートパラメータ制約
Tは符号付き整数型または符号無し整数型であること。
戻り値
- 無限の範囲で計算した値
x + yが型Tで表現可能ならば、x + yを返す - そうでないとき、型
Tで表現可能な最大値または最小値のうちx + yに近い方の値を返す
例外
投げない
例
#include <cstdint>
#include <numeric>
#include <print>
int main()
{
// 1 + 2 = 3
std::println("{}", std::add_sat(1, 2));
// 200 + 200 = 400 -> 255(2**8-1)
std::uint8_t x = 200;
std::println("{}", std::add_sat(x, x));
// -100 + -100 = -200 -> -128(-2**7)
std::int8_t y = -100;
std::println("{}", std::add_sat(y, y));
}
出力
3
255
-128
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??