Saturation arithmetic building on 'Integer-Overflow-Builtins' Implementation works with integer, unsigned integer and float or reference to them. Operators work with the same types or Saturated types of them.
More...
|
constexpr | Saturated (const T &value) |
|
constexpr | Saturated (const Saturated< T > &other) |
|
template<typename U > |
requires constexpr std::integral< std::remove_reference_t< U > > | Saturated (const U &v) |
|
template<typename U > |
requires constexpr std::floating_point< std::remove_reference_t< U > > | Saturated (const U &v) |
|
template<typename U > |
requires constexpr std::integral< std::remove_reference_t< U > > | Saturated (const Saturated< U > &other) |
|
TP | getValue () const |
|
| operator T & () |
|
| operator T () const |
|
constexpr auto | operator<=> (const Saturated< T > &) const = default |
|
void | operator= (const Saturated &other) |
|
template<typename U > |
requires std::integral< std::remove_reference_t< U > > void | operator= (const Saturated< U > &other) |
|
Saturated & | operator++ () |
|
Saturated & | operator-- () |
|
Saturated | operator++ (int) |
|
Saturated | operator-- (int) |
|
template<typename U > |
requires std::unsigned_integral< std::remove_reference_t< U > > Saturated & | operator+= (const Saturated< U > &other) |
|
template<typename U > |
requires std::signed_integral< std::remove_reference_t< U > > Saturated & | operator+= (const Saturated< U > &other) |
|
template<typename U > |
requires std::unsigned_integral< std::remove_reference_t< U > > Saturated & | operator-= (const Saturated< U > &other) |
|
template<typename U > |
requires std::signed_integral< std::remove_reference_t< U > > Saturated & | operator-= (const Saturated< U > &other) |
|
template<typename U > |
requires std::unsigned_integral< std::remove_reference_t< U > > Saturated & | operator*= (const Saturated< U > &other) |
|
template<typename U > |
requires std::signed_integral< std::remove_reference_t< U > > Saturated & | operator*= (const Saturated< U > &other) |
|
template<typename U > |
requires std::unsigned_integral< std::remove_reference_t< U > > Saturated & | operator*= (const U &v) |
|
template<typename U > |
requires std::signed_integral< std::remove_reference_t< U > > Saturated & | operator*= (const U &v) |
|
template<typename U > |
requires std::unsigned_integral< std::remove_reference_t< U > > TP | operator+ (const Saturated< U > &other) |
|
template<typename U > |
requires std::signed_integral< std::remove_reference_t< U > > TP | operator+ (const Saturated< U > &other) |
|
template<typename U > |
requires std::unsigned_integral< std::remove_reference_t< U > > TP | operator- (const Saturated< U > &other) |
|
template<typename U > |
requires std::signed_integral< std::remove_reference_t< U > > TP | operator- (const Saturated< U > &other) |
|
TP | operator* (const Saturated< T > &other) |
|
TS | operator- () |
|
void | absolute () |
|
template<typename T>
class modm::Saturated< T >
Saturation arithmetic building on 'Integer-Overflow-Builtins' Implementation works with integer, unsigned integer and float or reference to them. Operators work with the same types or Saturated types of them.
- See also
- https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html
-
https://en.wikipedia.org/wiki/Saturation_arithmetic
- Author
- Thomas Sommer