Skip to content

mp_units::utility::safe_int

Wraps an integral type with overflow detection.

Synopsis

Declared in <mp-units/utility/safe_int.h>

template<
  /* implementation-defined */ T, OverflowPolicy EP = safe_int_throw_policy>
class safe_int;

Description

This class wraps any integral type and models all requirements for mp-units representation types (RealScalar, UnitMagnitudeScalable, etc.). Every arithmetic operation checks for overflow and delegates to the ErrorPolicy::on_overflow() handler on detection.

Type Aliases

Member Functions

NameDescription
safe_int [constructor]Constructors
operator%= Modulus assignment operator
operator*= Multiplication assignment operator
operator+ Unary plus operator
operator++ Increment operators
operator+= Addition assignment operator
operator- Unary minus operator
operator-- Decrement operators
operator-= Subtraction assignment operator
operator/= Division assignment operator
value
operator T Conversion to T

Data Members

Name
value_

Deduction Guides

Friends

NameDescription
mp_units::utility::operator<<Stream insertion operator
mp_units::utility::operator<=>Three-way comparison operator
mp_units::utility::operator==Equality operator
mp_units::utility::operator/Division operator
mp_units::utility::operator/Division operator
mp_units::utility::operator*Multiplication operator
mp_units::utility::operator*Multiplication operator
mp_units::utility::operator-Subtraction operator
mp_units::utility::operator-Subtraction operator
mp_units::utility::operator+Addition operator
mp_units::utility::operator+Addition operator
mp_units::utility::operator%Modulus operator
mp_units::utility::operator%Modulus operator
mp_units::utility::operator/Division operator
mp_units::utility::operator/Division operator
mp_units::utility::operator*Multiplication operator
mp_units::utility::operator*Multiplication operator
mp_units::utility::operator-Subtraction operator
mp_units::utility::operator-Subtraction operator
mp_units::utility::operator+Addition operator
mp_units::utility::operator+Addition operator
mp_units::utility::operator<=>Three-way comparison operator
mp_units::utility::operator==Equality operator
mp_units::utility::operator/
mp_units::utility::operator/
mp_units::utility::operator*
mp_units::utility::operator*
mp_units::utility::operator-
mp_units::utility::operator-
mp_units::utility::operator+
mp_units::utility::operator+
mp_units::utility::operator<=>Three-way comparison operator
mp_units::utility::operator==Equality operator
mp_units::utility::operator%Modulus operator
mp_units::utility::operator%Modulus operator
mp_units::utility::operator/Division operator
mp_units::utility::operator/Division operator
mp_units::utility::operator*Multiplication operator
mp_units::utility::operator*Multiplication operator
mp_units::utility::operator-Subtraction operator
mp_units::utility::operator-Subtraction operator
mp_units::utility::operator+Addition operator
mp_units::utility::operator+Addition operator
mp_units::utility::operator<=>Three-way comparison operator
mp_units::utility::operator==Equality operator
mp_units::utility::operator%Modulus operator
mp_units::utility::operator/Division operator
mp_units::utility::operator*Multiplication operator
mp_units::utility::operator-Subtraction operator
mp_units::utility::operator+Addition operator

Template Parameters

NameDescription
Tthe underlying integral type (e.g. int, long, uint32_t)
ErrorPolicyhow to react to overflow — default: safe_int_throw_policy on hosted, safe_int_terminate_policy on freestanding