63 OverflowKind overflowed_;
66 Result(T value,
bool overflowed)
68 , overflowed_{overflowed ? OverflowKind::Overflow : OverflowKind::NoOverflow}
71 Result(T value, OverflowKind overflowed)
73 , overflowed_{overflowed}
77 bool operator==(Result other)
const
79 return value == other.value && overflowed_ == other.overflowed_;
82 std::optional<T> valueChecked()
const
84 if (overflowed_ != OverflowKind::NoOverflow) {
98 if (overflowed_ == OverflowKind::DivByZero) {
104 bool overflowed()
const
106 return overflowed_ == OverflowKind::Overflow;
109 bool divideByZero()
const
111 return overflowed_ == OverflowKind::DivByZero;