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

Name
error_policy
value_type

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

Name
safe_int<T>

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

Non-Member Functions

NameDescription
detail::operator%Modulus operator
detail::operator*Multiplication operator
detail::operator+Addition operator
detail::operator-Subtraction operator
detail::operator/Division operator
detail::operator<=>Three-way comparison operator
detail::operator==Equality 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