namespace std {
template<class T>
constexpr T sub_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()
{
// 3 - 1 = 2
std::println("{}", std::sub_sat(3, 1));
// 1 - 3 = -2 -> 0
std::println("{}", std::sub_sat(1u, 3u));
// -100 - 50 = -150 -> -128(-2**7)
std::int8_t x = -100, y = 50;
std::println("{}", std::sub_sat(x, y));
}
xxxxxxxxxx
#include <cstdint>
#include <numeric>
#include <print>
int main()
{
// 3 - 1 = 2
std::println("{}", std::sub_sat(3, 1));
// 1 - 3 = -2 -> 0
std::println("{}", std::sub_sat(1u, 3u));
// -100 - 50 = -150 -> -128(-2**7)
std::int8_t x = -100, y = 50;
std::println("{}", std::sub_sat(x, y));
}
出力
2
0
-128
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??