View source code
Display the source code in std/experimental/checkedint.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Function std.experimental.checkedint.Saturate.onUpperBound

Implements saturation for operators +=, -=, *=, /=, %=, ^^=, &=, |=, ^=, <<=, >>=, and >>>=. This hook is called if the result of the binary operation does not fit in Lhs without loss of information or a change in sign.

T onUpperBound(Rhs, T) (
  Rhs rhs,
  T bound
);

Parameters

NameDescription
Rhs The right-hand side type in the assignment, after the operation has been computed
bound The bound being violated

Returns

Lhs.max if rhs >= 0, Lhs.min otherwise.

Example

auto x = checked!Saturate(short(100));
x += 33000;
writeln(x); // short.max
x -= 70000;
writeln(x); // short.min

Authors

License