[#] = Global namespace :mrdocs: == Namespaces [cols=1] |=== | Name | link:#mp_units[`mp_units`] |=== == link:#mp_units[mp_units] namespace === Types [cols="1,4"] |=== | Name| Description | link:#mp_units-absolute_point_origin[`absolute_point_origin`] | | link:#mp_units-base_dimension[`base_dimension`] | A dimension of a base quantity | link:#mp_units-basic_fixed_string-08[`basic_fixed_string`] | A compile‐time fixed string | link:#mp_units-binomial_distribution-0e[`binomial_distribution`] | | link:#mp_units-binomial_distribution-08[`binomial_distribution`] | | link:#mp_units-cartesian_vector-08[`cartesian_vector`] | | link:#mp_units-cauchy_distribution-04[`cauchy_distribution`] | | link:#mp_units-cauchy_distribution-0b[`cauchy_distribution`] | | link:#mp_units-check_in_range[`check_in_range`] | Policy that checks the value is within [min, max]and reports violations. | link:#mp_units-check_non_negative[`check_non_negative`] | Policy that checks the value is ≥ 0 and reports violations. | link:#mp_units-chi_squared_distribution-0b[`chi_squared_distribution`] | | link:#mp_units-chi_squared_distribution-08[`chi_squared_distribution`] | | link:#mp_units-clamp_non_negative[`clamp_non_negative`] | Policy that clamps the value to [0, ∞).] | link:#mp_units-clamp_to_range[`clamp_to_range`] | Policy that clamps the value to [min, max]. | link:#mp_units-common_unit[`common_unit`] | Measurement unit for an accumulation of two quantities of different units | link:#mp_units-constrained[`constrained`] | A transparent wrapper that carries an error policy for domain constraint enforcement. | link:#mp_units-constraint_violation_handler-0c[`constraint_violation_handler`] | Customization point for handling domain constraint violations. | link:#mp_units-constraint_violation_handler-04[`constraint_violation_handler<constrained<T, ErrorPolicy>>`] | | link:#mp_units-constraint_violation_handler-0a[`constraint_violation_handler<safe_int<T, ErrorPolicy>>`] | | link:#mp_units-derived_dimension[`derived_dimension`] | A dimension of a derived quantity | link:#mp_units-derived_quantity_spec[`derived_quantity_spec`] | A specification of a derived quantity | link:#mp_units-derived_unit[`derived_unit`] | Measurement unit for a derived quantity | link:#mp_units-dimension_one-063[`dimension_one`] | Dimension one | link:#mp_units-dimension_symbol_formatting[`dimension_symbol_formatting`] | | link:#mp_units-dimensionless-0f[`dimensionless`] | Quantity of dimension one | link:#mp_units-discrete_distribution-08[`discrete_distribution`] | | link:#mp_units-discrete_distribution-05[`discrete_distribution`] | | link:#mp_units-exponential_distribution-0e[`exponential_distribution`] | | link:#mp_units-exponential_distribution-08[`exponential_distribution`] | | link:#mp_units-extreme_value_distribution-0e[`extreme_value_distribution`] | | link:#mp_units-extreme_value_distribution-0d[`extreme_value_distribution`] | | link:#mp_units-fisher_f_distribution-02[`fisher_f_distribution`] | | link:#mp_units-fisher_f_distribution-08[`fisher_f_distribution`] | | link:#mp_units-gamma_distribution-0a4[`gamma_distribution`] | | link:#mp_units-gamma_distribution-0a8[`gamma_distribution`] | | link:#mp_units-geometric_distribution-08[`geometric_distribution`] | | link:#mp_units-geometric_distribution-06[`geometric_distribution`] | | link:#mp_units-is_kind-06[`is_kind`] | | link:#mp_units-kind_of_-00[`kind_of_`] | | link:#mp_units-kind_of_-0d[`kind_of_<Q>`] | | link:#mp_units-lognormal_distribution-0e[`lognormal_distribution`] | | link:#mp_units-lognormal_distribution-08[`lognormal_distribution`] | | link:#mp_units-mag_constant[`mag_constant`] | | link:#mp_units-named_constant[`named_constant`] | Named constant definition | link:#mp_units-named_unit-0ec[`named_unit`] | A named unit | link:#mp_units-named_unit-07[`named_unit<Symbol, U>`] | Specialization for unit of a specified base quantity | link:#mp_units-named_unit-05[`named_unit<Symbol, U, QS>`] | Specialization for a unit with special name valid only for a specific quantity | link:#mp_units-named_unit-0e4[`named_unit<Symbol, U, QS, PO>`] | | link:#mp_units-natural_point_origin_[`natural_point_origin_`] | | link:#mp_units-negative_binomial_distribution-0f[`negative_binomial_distribution`] | | link:#mp_units-negative_binomial_distribution-09[`negative_binomial_distribution`] | | link:#mp_units-non_negative-05[`non_negative`] | | link:#mp_units-normal_distribution-0a[`normal_distribution`] | | link:#mp_units-normal_distribution-04[`normal_distribution`] | | link:#mp_units-one-0f[`one`] | Unit one | link:#mp_units-parts_per_million-0f[`parts_per_million`] | | link:#mp_units-per[`per`] | Type list type storing the list of components with negative exponents | link:#mp_units-per_mille-01[`per_mille`] | | link:#mp_units-percent-02[`percent`] | | link:#mp_units-pi-0c[`pi`] | | link:#mp_units-pi_c-0b[`pi_c`] | | link:#mp_units-piecewise_constant_distribution-0d[`piecewise_constant_distribution`] | | link:#mp_units-piecewise_constant_distribution-0a[`piecewise_constant_distribution`] | | link:#mp_units-piecewise_linear_distribution-059[`piecewise_linear_distribution`] | | link:#mp_units-piecewise_linear_distribution-050[`piecewise_linear_distribution`] | | link:#mp_units-poisson_distribution-098[`poisson_distribution`] | | link:#mp_units-poisson_distribution-09c[`poisson_distribution`] | | link:#mp_units-power[`power`] | Type container for exponents with ratio different than `1` | link:#mp_units-prefixed_unit[`prefixed_unit`] | A prefixed unit | link:#mp_units-quantity-01[`quantity`] | A quantity | link:#mp_units-quantity_like_traits[`quantity_like_traits`] | Provides support for external quantity‐like types | link:#mp_units-quantity_point-08[`quantity_point`] | A quantity point | link:#mp_units-quantity_point_like_traits[`quantity_point_like_traits`] | Provides support for external quantity point‐like types | link:#mp_units-quantity_spec-09[`quantity_spec`] | | link:#mp_units-quantity_spec-0a6[`quantity_spec<QS, Args...>`] | | link:#mp_units-quantity_spec-0a0[`quantity_spec<QS, Eq, Args...>`] | | link:#mp_units-reference[`reference`] | Quantity reference type | link:#mp_units-reflect_in_range[`reflect_in_range`] | Policy that reflects (folds) the value at both boundaries. | link:#mp_units-relative_point_origin[`relative_point_origin`] | | link:#mp_units-representation_values[`representation_values`] | A type trait that defines zero, one, min, and max for a representation type | link:#mp_units-safe_int-09[`safe_int`] | Wraps an integral type with overflow detection. | link:#mp_units-safe_int_terminate_policy[`safe_int_terminate_policy`] | Error policy that terminates the program on overflow (always available, freestanding‐safe). | link:#mp_units-safe_int_throw_policy[`safe_int_throw_policy`] | Error policy that throws std::overflow_error on overflow (hosted only). | link:#mp_units-scaled_unit[`scaled_unit`] | Unit being a scaled version of another unit | link:#mp_units-student_t_distribution-0b[`student_t_distribution`] | | link:#mp_units-student_t_distribution-0c[`student_t_distribution`] | | link:#mp_units-symbol_text-032[`symbol_text`] | A symbol text representation | link:#mp_units-terminate_policy[`terminate_policy`] | Error policy that terminates the program on constraint violation (freestanding‐safe). | link:#mp_units-throw_policy[`throw_policy`] | Error policy that throws std::domain_error on constraint violation (hosted only). | link:#mp_units-uniform_int_distribution-08[`uniform_int_distribution`] | | link:#mp_units-uniform_int_distribution-0e[`uniform_int_distribution`] | | link:#mp_units-uniform_real_distribution-0c[`uniform_real_distribution`] | | link:#mp_units-uniform_real_distribution-05[`uniform_real_distribution`] | | link:#mp_units-unit_symbol_formatting[`unit_symbol_formatting`] | | link:#mp_units-weibull_distribution-0d[`weibull_distribution`] | | link:#mp_units-weibull_distribution-04[`weibull_distribution`] | | link:#mp_units-wrap_to_range[`wrap_to_range`] | Policy that wraps the value into the half‐open range [min, max).] | link:#mp_units-conditional[`conditional`] | | link:#mp_units-expr_type[`expr_type`] | | link:#mp_units-fixed_string[`fixed_string`] | | link:#mp_units-fixed_u16string[`fixed_u16string`] | | link:#mp_units-fixed_u32string[`fixed_u32string`] | | link:#mp_units-fixed_u8string[`fixed_u8string`] | | link:#mp_units-fixed_wstring[`fixed_wstring`] | | link:#mp_units-is_same[`is_same`] | | link:#mp_units-quantity_values[`quantity_values`] | | link:#mp_units-rep_for[`rep_for`] | | link:#mp_units-safe_i16[`safe_i16`] | | link:#mp_units-safe_i32[`safe_i32`] | | link:#mp_units-safe_i64[`safe_i64`] | | link:#mp_units-safe_i8[`safe_i8`] | | link:#mp_units-safe_u16[`safe_u16`] | | link:#mp_units-safe_u32[`safe_u32`] | | link:#mp_units-safe_u64[`safe_u64`] | | link:#mp_units-safe_u8[`safe_u8`] | | link:#mp_units-text_encoding[`text_encoding`] | | link:#mp_units-value_type_t[`value_type_t`] | | link:#mp_units-wrapped_type_t[`wrapped_type_t`] | | link:#mp_units-zeroth_point_origin_[`zeroth_point_origin_`] | |=== === Enums [cols="1,4"] |=== | Name| Description | link:#mp_units-character_set[`character_set`] | | link:#mp_units-quantity_character[`quantity_character`] | Quantity character | link:#mp_units-unit_symbol_separator[`unit_symbol_separator`] | | link:#mp_units-unit_symbol_solidus[`unit_symbol_solidus`] | |=== === Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-abs[`abs`] | Computes the absolute value of a quantity | link:#mp_units-absolute[`absolute`] | | link:#mp_units-castable[`castable`] | | link:#mp_units-cbrt-07[`cbrt`] | Computes the cubic root of a quantity | link:#mp_units-ceil[`ceil`] | Computes the smallest quantity with integer representation and unit type To with its number not less than q | link:#mp_units-contains-01b[`contains`] | | link:#mp_units-default_point_origin[`default_point_origin`] | | link:#mp_units-delta[`delta`] | | link:#mp_units-dimension_symbol[`dimension_symbol`] | | link:#mp_units-dimension_symbol_to[`dimension_symbol_to`] | | link:#mp_units-epsilon[`epsilon`] | Returns the epsilon of the quantity | link:#mp_units-exp[`exp`] | Computes Euler's raised to the given power | link:#mp_units-explicitly_convertible[`explicitly_convertible`] | | link:#mp_units-floor[`floor`] | Computes the largest quantity with integer representation and unit type To with its number not greater than q | link:#mp_units-fma-0c[`fma`] | `fma` overloads | link:#mp_units-fmod[`fmod`] | Computes the floating‐point remainder of the division operation x / y. | link:#mp_units-get-0a[`get`] | | link:#mp_units-get_canonical_unit[`get_canonical_unit`] | | link:#mp_units-get_common_quantity_spec-08[`get_common_quantity_spec`] | | link:#mp_units-get_common_reference[`get_common_reference`] | | link:#mp_units-get_common_unit-08f[`get_common_unit`] | | link:#mp_units-get_kind[`get_kind`] | | link:#mp_units-get_quantity_spec[`get_quantity_spec`] | | link:#mp_units-get_unit[`get_unit`] | | link:#mp_units-hypot-00[`hypot`] | `hypot` overloads | link:#mp_units-implicitly_convertible[`implicitly_convertible`] | | link:#mp_units-interconvertible[`interconvertible`] | | link:#mp_units-inverse-0e[`inverse`] | Computes the inverse of a quantity in a provided unit | link:#mp_units-is_eq_zero[`is_eq_zero`] | | link:#mp_units-is_gt_zero[`is_gt_zero`] | | link:#mp_units-is_gteq_zero[`is_gteq_zero`] | | link:#mp_units-is_integral_scaling[`is_integral_scaling`] | Returns `true` if the scaling factor from `from` to `to` is an exact positive integer. | link:#mp_units-is_lt_zero[`is_lt_zero`] | | link:#mp_units-is_lteq_zero[`is_lteq_zero`] | | link:#mp_units-is_neq_zero[`is_neq_zero`] | | link:#mp_units-is_non_negative[`is_non_negative`] | | link:#mp_units-isfinite-01[`isfinite`] | `isfinite` overloads | link:#mp_units-isinf-0c[`isinf`] | `isinf` overloads | link:#mp_units-isnan-08c[`isnan`] | `isnan` overloads | link:#mp_units-lerp[`lerp`] | Linear interpolation or extrapolation | link:#mp_units-magnitude-0a[`magnitude`] | | link:#mp_units-midpoint[`midpoint`] | Computes the midpoint of two points | link:#mp_units-norm[`norm`] | | link:#mp_units-operator_mod-01[`operator%`] | Modulus operators | link:#mp_units-operator_star-000[`operator*`] | Multiplication operators | link:#mp_units-operator_plus-0a[`operator+`] | Unary plus operators | link:#mp_units-operator_minus-0c5[`operator‐`] | Unary minus operators | link:#mp_units-operator_slash-0a8[`operator/`] | Division operators | link:#mp_units-point[`point`] | | link:#mp_units-pow-00[`pow`] | Computes the value of a quantity raised to the `Num/Den` power | link:#mp_units-quantity_cast-0f[`quantity_cast`] | `quantity_cast` overloads | link:#mp_units-remainder[`remainder`] | Computes the IEEE remainder of the floating point division operation x / y. | link:#mp_units-round[`round`] | Computes the nearest quantity with integer representation and unit type `To` to `q` | link:#mp_units-scale[`scale`] | Scale `value` by the unit magnitude passed as `m,` converting to type `To.` | link:#mp_units-sqrt-0c[`sqrt`] | Computes the square root of a quantity | link:#mp_units-swap[`swap`] | | link:#mp_units-unit_symbol[`unit_symbol`] | | link:#mp_units-unit_symbol_to[`unit_symbol_to`] | | link:#mp_units-unit_vector[`unit_vector`] | | link:#mp_units-value_cast-03d[`value_cast`] | `value_cast` overloads | link:#mp_units-operator_lshift-0e[`operator<<`] | Stream insertion operators | link:#mp_units-operator_eq-0c[`operator==`] | Equality operators | link:#mp_units-operator_3way-06[`operator<=>`] | Three‐way comparison operators |=== === Variables [cols="1,4"] |=== | Name| Description | link:#mp_units-dimension_one-060[`dimension_one`] | | link:#mp_units-dimensionless-03[`dimensionless`] | Quantity of dimension one | link:#mp_units-disable_real-00[`disable_real`] | //////////// REAL SCALAR /////////////// | link:#mp_units-disable_real-0b[`disable_real<bool>`] | | link:#mp_units-imag[`imag`] | | link:#mp_units-implicitly_scalable[`implicitly_scalable`] | Controls whether conversion from `quantity<FromUnit, FromRep>` to `quantity<ToUnit, ToRep>` is implicit or explicit. | link:#mp_units-is_complex[`is_complex`] | | link:#mp_units-is_derived_from_specialization_of[`is_derived_from_specialization_of`] | | link:#mp_units-is_derived_from_specialization_of_v[`is_derived_from_specialization_of_v`] | | link:#mp_units-is_kind-0b[`is_kind`] | | link:#mp_units-is_same_v-0d[`is_same_v`] | | link:#mp_units-is_same_v-0e[`is_same_v<T, T>`] | | link:#mp_units-is_scalar[`is_scalar`] | | link:#mp_units-is_specialization_of-06[`is_specialization_of`] | | link:#mp_units-is_specialization_of-0b[`is_specialization_of<Type<Params...>, Type>`] | | link:#mp_units-is_specialization_of_v-01[`is_specialization_of_v`] | | link:#mp_units-is_specialization_of_v-08[`is_specialization_of_v<Type<Params...>, Type>`] | | link:#mp_units-is_tensor[`is_tensor`] | | link:#mp_units-is_value_preserving[`is_value_preserving`] | Specifies if a specific conversion between two types is representable without data loss | link:#mp_units-is_vector[`is_vector`] | | link:#mp_units-kind_of[`kind_of`] | | link:#mp_units-known_first_factor[`known_first_factor`] | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | link:#mp_units-mag-034[`mag<>`] | | link:#mp_units-mag-032[`mag`] | | link:#mp_units-mag_pi[`mag_pi`] | | link:#mp_units-mag_power[`mag_power`] | Create a Magnitude which is some rational number raised to a rational power. | link:#mp_units-mag_ratio[`mag_ratio`] | | link:#mp_units-magnitude-04[`magnitude`] | | link:#mp_units-modulus[`modulus`] | | link:#mp_units-natural_point_origin[`natural_point_origin`] | | link:#mp_units-non_negative-0d[`non_negative`] | | link:#mp_units-one-07[`one`] | | link:#mp_units-parts_per_million-0a[`parts_per_million`] | | link:#mp_units-per_mille-08[`per_mille`] | | link:#mp_units-percent-0a[`percent`] | | link:#mp_units-pi-0f[`pi`] | | link:#mp_units-pi_c-0e[`pi_c`] | | link:#mp_units-ppm[`ppm`] | | link:#mp_units-quantity_bounds[`quantity_bounds`] | Customization point for providing bounds on a quantity point relative to an origin. | link:#mp_units-real[`real`] | | link:#mp_units-reference_for-01f[`reference_for`] | | link:#mp_units-reference_for-0f[`reference_for<T>`] | | link:#mp_units-reference_for-09[`reference_for<quantity<R, Rep>>`] | | link:#mp_units-reference_for-018[`reference_for<quantity_point<R, PO, Rep>>`] | | link:#mp_units-space_before_unit_symbol[`space_before_unit_symbol`] | Puts a space ' ' sign before a unit symbol | link:#mp_units-treat_as_floating_point[`treat_as_floating_point`] | Specifies if a value of a type should be treated as a floating‐point value | link:#mp_units-unit_for-07[`unit_for`] | | link:#mp_units-unit_for-04[`unit_for<T>`] | | link:#mp_units-unit_for-08[`unit_for<quantity<R, Rep>>`] | | link:#mp_units-unit_for-01[`unit_for<quantity_point<R, PO, Rep>>`] | | link:#mp_units-zeroth_point_origin[`zeroth_point_origin`] | | link:#mp_units-π[`π`] | |=== === Concepts [cols="1,4"] |=== | Name| Description | link:#mp_units-ConstraintPolicy[`ConstraintPolicy`] | | link:#mp_units-Dimension[`Dimension`] | A concept matching all dimensions in the library. | link:#mp_units-DimensionOf[`DimensionOf`] | A concept checking if the argument is of the same dimension. | link:#mp_units-OverflowPolicy[`OverflowPolicy`] | | link:#mp_units-PointOrigin[`PointOrigin`] | A concept matching all quantity point origins in the library | link:#mp_units-PointOriginFor[`PointOriginFor`] | A concept matching all quantity point origins for a specified quantity type in the library | link:#mp_units-PrefixableUnit[`PrefixableUnit`] | A concept to be used to define prefixes for a unit | link:#mp_units-Quantity[`Quantity`] | A concept matching all quantities in the library | link:#mp_units-QuantityLike[`QuantityLike`] | A concept matching all external quantities like types | link:#mp_units-QuantityOf[`QuantityOf`] | A concept matching all quantities of the provided quantity spec | link:#mp_units-QuantityPoint[`QuantityPoint`] | A concept matching all quantity points in the library | link:#mp_units-QuantityPointLike[`QuantityPointLike`] | A concept matching all external quantity point like types | link:#mp_units-QuantityPointOf[`QuantityPointOf`] | A concept matching all quantity points of the provided property | link:#mp_units-QuantitySpec[`QuantitySpec`] | | link:#mp_units-QuantitySpecOf[`QuantitySpecOf`] | A concept matching all quantity specifications of a provided quantity spec value | link:#mp_units-Reference[`Reference`] | A concept matching all references in the library. | link:#mp_units-ReferenceOf[`ReferenceOf`] | A concept matching all references of the provided quantity spec | link:#mp_units-RepresentationOf[`RepresentationOf`] | | link:#mp_units-Unit[`Unit`] | A concept matching all unit types in the library | link:#mp_units-UnitMagnitude[`UnitMagnitude`] | Concept to detect whether T is a valid UnitMagnitude. | link:#mp_units-UnitOf[`UnitOf`] | A concept matching all units associated with the provided quantity spec |=== === Deduction Guides [cols=1] |=== | Name | link:#mp_units-basic_fixed_string-0d[`basic_fixed_string<CharT, N ‐ 1>`] | link:#mp_units-basic_fixed_string-0f[`basic_fixed_string<CharT, 1 + sizeof...(Rest)>`] | link:#mp_units-basic_fixed_string-07[`basic_fixed_string<CharT, N>`] | link:#mp_units-cartesian_vector-05[`cartesian_vector<std::common_type_t<Arg, Args...>>`] | link:#mp_units-quantity-05[`quantity<quantity_like_traits<Q>::reference, quantity_like_traits<Q>::rep>`] | link:#mp_units-quantity-07[`quantity<R, Value>`] | link:#mp_units-quantity-02[`quantity<R{}, Value>`] | link:#mp_units-quantity_point-04[`quantity_point<Q::reference, default_point_origin(Q::reference), Q::rep>`] | link:#mp_units-quantity_point-0cb[`quantity_point<quantity_point_like_traits<QP>::reference, quantity_point_like_traits<QP>::point_origin, quantity_point_like_traits<QP>::rep>`] | link:#mp_units-quantity_point-0c5[`quantity_point<Q::reference, PO{}, Q::rep>`] | link:#mp_units-safe_int-0b[`safe_int<T>`] | link:#mp_units-symbol_text-06[`symbol_text<1, 1>`] | link:#mp_units-symbol_text-07[`symbol_text<N, N>`] | link:#mp_units-symbol_text-03f[`symbol_text<N ‐ 1, N ‐ 1>`] | link:#mp_units-symbol_text-0f[`symbol_text<N, M>`] | link:#mp_units-symbol_text-01[`symbol_text<N ‐ 1, M ‐ 1>`] |=== == Types [cols="1,4"] |=== | Name| Description | link:#mp_units-absolute_point_origin[`absolute_point_origin`] | | link:#mp_units-base_dimension[`base_dimension`] | A dimension of a base quantity | link:#mp_units-basic_fixed_string-08[`basic_fixed_string`] | A compile‐time fixed string | link:#mp_units-binomial_distribution-0e[`binomial_distribution`] | | link:#mp_units-binomial_distribution-08[`binomial_distribution`] | | link:#mp_units-cartesian_vector-08[`cartesian_vector`] | | link:#mp_units-cauchy_distribution-04[`cauchy_distribution`] | | link:#mp_units-cauchy_distribution-0b[`cauchy_distribution`] | | link:#mp_units-check_in_range[`check_in_range`] | Policy that checks the value is within [min, max]and reports violations. | link:#mp_units-check_non_negative[`check_non_negative`] | Policy that checks the value is ≥ 0 and reports violations. | link:#mp_units-chi_squared_distribution-0b[`chi_squared_distribution`] | | link:#mp_units-chi_squared_distribution-08[`chi_squared_distribution`] | | link:#mp_units-clamp_non_negative[`clamp_non_negative`] | Policy that clamps the value to [0, ∞).] | link:#mp_units-clamp_to_range[`clamp_to_range`] | Policy that clamps the value to [min, max]. | link:#mp_units-common_unit[`common_unit`] | Measurement unit for an accumulation of two quantities of different units | link:#mp_units-constrained[`constrained`] | A transparent wrapper that carries an error policy for domain constraint enforcement. | link:#mp_units-constraint_violation_handler-0c[`constraint_violation_handler`] | Customization point for handling domain constraint violations. | link:#mp_units-constraint_violation_handler-04[`constraint_violation_handler<constrained<T, ErrorPolicy>>`] | | link:#mp_units-constraint_violation_handler-0a[`constraint_violation_handler<safe_int<T, ErrorPolicy>>`] | | link:#mp_units-derived_dimension[`derived_dimension`] | A dimension of a derived quantity | link:#mp_units-derived_quantity_spec[`derived_quantity_spec`] | A specification of a derived quantity | link:#mp_units-derived_unit[`derived_unit`] | Measurement unit for a derived quantity | link:#mp_units-dimension_one-063[`dimension_one`] | Dimension one | link:#mp_units-dimension_symbol_formatting[`dimension_symbol_formatting`] | | link:#mp_units-dimensionless-0f[`dimensionless`] | Quantity of dimension one | link:#mp_units-discrete_distribution-08[`discrete_distribution`] | | link:#mp_units-discrete_distribution-05[`discrete_distribution`] | | link:#mp_units-exponential_distribution-0e[`exponential_distribution`] | | link:#mp_units-exponential_distribution-08[`exponential_distribution`] | | link:#mp_units-extreme_value_distribution-0e[`extreme_value_distribution`] | | link:#mp_units-extreme_value_distribution-0d[`extreme_value_distribution`] | | link:#mp_units-fisher_f_distribution-02[`fisher_f_distribution`] | | link:#mp_units-fisher_f_distribution-08[`fisher_f_distribution`] | | link:#mp_units-gamma_distribution-0a4[`gamma_distribution`] | | link:#mp_units-gamma_distribution-0a8[`gamma_distribution`] | | link:#mp_units-geometric_distribution-08[`geometric_distribution`] | | link:#mp_units-geometric_distribution-06[`geometric_distribution`] | | link:#mp_units-is_kind-06[`is_kind`] | | link:#mp_units-kind_of_-00[`kind_of_`] | | link:#mp_units-kind_of_-0d[`kind_of_<Q>`] | | link:#mp_units-lognormal_distribution-0e[`lognormal_distribution`] | | link:#mp_units-lognormal_distribution-08[`lognormal_distribution`] | | link:#mp_units-mag_constant[`mag_constant`] | | link:#mp_units-named_constant[`named_constant`] | Named constant definition | link:#mp_units-named_unit-0ec[`named_unit`] | A named unit | link:#mp_units-named_unit-07[`named_unit<Symbol, U>`] | Specialization for unit of a specified base quantity | link:#mp_units-named_unit-05[`named_unit<Symbol, U, QS>`] | Specialization for a unit with special name valid only for a specific quantity | link:#mp_units-named_unit-0e4[`named_unit<Symbol, U, QS, PO>`] | | link:#mp_units-natural_point_origin_[`natural_point_origin_`] | | link:#mp_units-negative_binomial_distribution-0f[`negative_binomial_distribution`] | | link:#mp_units-negative_binomial_distribution-09[`negative_binomial_distribution`] | | link:#mp_units-non_negative-05[`non_negative`] | | link:#mp_units-normal_distribution-0a[`normal_distribution`] | | link:#mp_units-normal_distribution-04[`normal_distribution`] | | link:#mp_units-one-0f[`one`] | Unit one | link:#mp_units-parts_per_million-0f[`parts_per_million`] | | link:#mp_units-per[`per`] | Type list type storing the list of components with negative exponents | link:#mp_units-per_mille-01[`per_mille`] | | link:#mp_units-percent-02[`percent`] | | link:#mp_units-pi-0c[`pi`] | | link:#mp_units-pi_c-0b[`pi_c`] | | link:#mp_units-piecewise_constant_distribution-0d[`piecewise_constant_distribution`] | | link:#mp_units-piecewise_constant_distribution-0a[`piecewise_constant_distribution`] | | link:#mp_units-piecewise_linear_distribution-059[`piecewise_linear_distribution`] | | link:#mp_units-piecewise_linear_distribution-050[`piecewise_linear_distribution`] | | link:#mp_units-poisson_distribution-098[`poisson_distribution`] | | link:#mp_units-poisson_distribution-09c[`poisson_distribution`] | | link:#mp_units-power[`power`] | Type container for exponents with ratio different than `1` | link:#mp_units-prefixed_unit[`prefixed_unit`] | A prefixed unit | link:#mp_units-quantity-01[`quantity`] | A quantity | link:#mp_units-quantity_like_traits[`quantity_like_traits`] | Provides support for external quantity‐like types | link:#mp_units-quantity_point-08[`quantity_point`] | A quantity point | link:#mp_units-quantity_point_like_traits[`quantity_point_like_traits`] | Provides support for external quantity point‐like types | link:#mp_units-quantity_spec-09[`quantity_spec`] | | link:#mp_units-quantity_spec-0a6[`quantity_spec<QS, Args...>`] | | link:#mp_units-quantity_spec-0a0[`quantity_spec<QS, Eq, Args...>`] | | link:#mp_units-reference[`reference`] | Quantity reference type | link:#mp_units-reflect_in_range[`reflect_in_range`] | Policy that reflects (folds) the value at both boundaries. | link:#mp_units-relative_point_origin[`relative_point_origin`] | | link:#mp_units-representation_values[`representation_values`] | A type trait that defines zero, one, min, and max for a representation type | link:#mp_units-safe_int-09[`safe_int`] | Wraps an integral type with overflow detection. | link:#mp_units-safe_int_terminate_policy[`safe_int_terminate_policy`] | Error policy that terminates the program on overflow (always available, freestanding‐safe). | link:#mp_units-safe_int_throw_policy[`safe_int_throw_policy`] | Error policy that throws std::overflow_error on overflow (hosted only). | link:#mp_units-scaled_unit[`scaled_unit`] | Unit being a scaled version of another unit | link:#mp_units-student_t_distribution-0b[`student_t_distribution`] | | link:#mp_units-student_t_distribution-0c[`student_t_distribution`] | | link:#mp_units-symbol_text-032[`symbol_text`] | A symbol text representation | link:#mp_units-terminate_policy[`terminate_policy`] | Error policy that terminates the program on constraint violation (freestanding‐safe). | link:#mp_units-throw_policy[`throw_policy`] | Error policy that throws std::domain_error on constraint violation (hosted only). | link:#mp_units-uniform_int_distribution-08[`uniform_int_distribution`] | | link:#mp_units-uniform_int_distribution-0e[`uniform_int_distribution`] | | link:#mp_units-uniform_real_distribution-0c[`uniform_real_distribution`] | | link:#mp_units-uniform_real_distribution-05[`uniform_real_distribution`] | | link:#mp_units-unit_symbol_formatting[`unit_symbol_formatting`] | | link:#mp_units-weibull_distribution-0d[`weibull_distribution`] | | link:#mp_units-weibull_distribution-04[`weibull_distribution`] | | link:#mp_units-wrap_to_range[`wrap_to_range`] | Policy that wraps the value into the half‐open range [min, max).] | link:#mp_units-conditional[`conditional`] | | link:#mp_units-expr_type[`expr_type`] | | link:#mp_units-fixed_string[`fixed_string`] | | link:#mp_units-fixed_u16string[`fixed_u16string`] | | link:#mp_units-fixed_u32string[`fixed_u32string`] | | link:#mp_units-fixed_u8string[`fixed_u8string`] | | link:#mp_units-fixed_wstring[`fixed_wstring`] | | link:#mp_units-is_same[`is_same`] | | link:#mp_units-quantity_values[`quantity_values`] | | link:#mp_units-rep_for[`rep_for`] | | link:#mp_units-safe_i16[`safe_i16`] | | link:#mp_units-safe_i32[`safe_i32`] | | link:#mp_units-safe_i64[`safe_i64`] | | link:#mp_units-safe_i8[`safe_i8`] | | link:#mp_units-safe_u16[`safe_u16`] | | link:#mp_units-safe_u32[`safe_u32`] | | link:#mp_units-safe_u64[`safe_u64`] | | link:#mp_units-safe_u8[`safe_u8`] | | link:#mp_units-text_encoding[`text_encoding`] | | link:#mp_units-value_type_t[`value_type_t`] | | link:#mp_units-wrapped_type_t[`wrapped_type_t`] | | link:#mp_units-zeroth_point_origin_[`zeroth_point_origin_`] | |=== == Enums [cols="1,4"] |=== | Name| Description | link:#mp_units-character_set[`character_set`] | | link:#mp_units-quantity_character[`quantity_character`] | Quantity character | link:#mp_units-unit_symbol_separator[`unit_symbol_separator`] | | link:#mp_units-unit_symbol_solidus[`unit_symbol_solidus`] | |=== == Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-abs[`abs`] | Computes the absolute value of a quantity | link:#mp_units-absolute[`absolute`] | | link:#mp_units-castable[`castable`] | | link:#mp_units-cbrt-07[`cbrt`] | Computes the cubic root of a quantity | link:#mp_units-ceil[`ceil`] | Computes the smallest quantity with integer representation and unit type To with its number not less than q | link:#mp_units-contains-01b[`contains`] | | link:#mp_units-default_point_origin[`default_point_origin`] | | link:#mp_units-delta[`delta`] | | link:#mp_units-dimension_symbol[`dimension_symbol`] | | link:#mp_units-dimension_symbol_to[`dimension_symbol_to`] | | link:#mp_units-epsilon[`epsilon`] | Returns the epsilon of the quantity | link:#mp_units-exp[`exp`] | Computes Euler's raised to the given power | link:#mp_units-explicitly_convertible[`explicitly_convertible`] | | link:#mp_units-floor[`floor`] | Computes the largest quantity with integer representation and unit type To with its number not greater than q | link:#mp_units-fma-0c[`fma`] | `fma` overloads | link:#mp_units-fmod[`fmod`] | Computes the floating‐point remainder of the division operation x / y. | link:#mp_units-get-0a[`get`] | | link:#mp_units-get_canonical_unit[`get_canonical_unit`] | | link:#mp_units-get_common_quantity_spec-08[`get_common_quantity_spec`] | | link:#mp_units-get_common_reference[`get_common_reference`] | | link:#mp_units-get_common_unit-08f[`get_common_unit`] | | link:#mp_units-get_kind[`get_kind`] | | link:#mp_units-get_quantity_spec[`get_quantity_spec`] | | link:#mp_units-get_unit[`get_unit`] | | link:#mp_units-hypot-00[`hypot`] | `hypot` overloads | link:#mp_units-implicitly_convertible[`implicitly_convertible`] | | link:#mp_units-interconvertible[`interconvertible`] | | link:#mp_units-inverse-0e[`inverse`] | Computes the inverse of a quantity in a provided unit | link:#mp_units-is_eq_zero[`is_eq_zero`] | | link:#mp_units-is_gt_zero[`is_gt_zero`] | | link:#mp_units-is_gteq_zero[`is_gteq_zero`] | | link:#mp_units-is_integral_scaling[`is_integral_scaling`] | Returns `true` if the scaling factor from `from` to `to` is an exact positive integer. | link:#mp_units-is_lt_zero[`is_lt_zero`] | | link:#mp_units-is_lteq_zero[`is_lteq_zero`] | | link:#mp_units-is_neq_zero[`is_neq_zero`] | | link:#mp_units-is_non_negative[`is_non_negative`] | | link:#mp_units-isfinite-01[`isfinite`] | `isfinite` overloads | link:#mp_units-isinf-0c[`isinf`] | `isinf` overloads | link:#mp_units-isnan-08c[`isnan`] | `isnan` overloads | link:#mp_units-lerp[`lerp`] | Linear interpolation or extrapolation | link:#mp_units-magnitude-0a[`magnitude`] | | link:#mp_units-midpoint[`midpoint`] | Computes the midpoint of two points | link:#mp_units-norm[`norm`] | | link:#mp_units-operator_mod-01[`operator%`] | Modulus operators | link:#mp_units-operator_star-000[`operator*`] | Multiplication operators | link:#mp_units-operator_plus-0a[`operator+`] | Unary plus operators | link:#mp_units-operator_minus-0c5[`operator‐`] | Unary minus operators | link:#mp_units-operator_slash-0a8[`operator/`] | Division operators | link:#mp_units-point[`point`] | | link:#mp_units-pow-00[`pow`] | Computes the value of a quantity raised to the `Num/Den` power | link:#mp_units-quantity_cast-0f[`quantity_cast`] | `quantity_cast` overloads | link:#mp_units-remainder[`remainder`] | Computes the IEEE remainder of the floating point division operation x / y. | link:#mp_units-round[`round`] | Computes the nearest quantity with integer representation and unit type `To` to `q` | link:#mp_units-scale[`scale`] | Scale `value` by the unit magnitude passed as `m,` converting to type `To.` | link:#mp_units-sqrt-0c[`sqrt`] | Computes the square root of a quantity | link:#mp_units-swap[`swap`] | | link:#mp_units-unit_symbol[`unit_symbol`] | | link:#mp_units-unit_symbol_to[`unit_symbol_to`] | | link:#mp_units-unit_vector[`unit_vector`] | | link:#mp_units-value_cast-03d[`value_cast`] | `value_cast` overloads | link:#mp_units-operator_lshift-0e[`operator<<`] | Stream insertion operators | link:#mp_units-operator_eq-0c[`operator==`] | Equality operators | link:#mp_units-operator_3way-06[`operator<=>`] | Three‐way comparison operators |=== == Variables [cols="1,4"] |=== | Name| Description | link:#mp_units-dimension_one-060[`dimension_one`] | | link:#mp_units-dimensionless-03[`dimensionless`] | Quantity of dimension one | link:#mp_units-disable_real-00[`disable_real`] | //////////// REAL SCALAR /////////////// | link:#mp_units-disable_real-0b[`disable_real<bool>`] | | link:#mp_units-imag[`imag`] | | link:#mp_units-implicitly_scalable[`implicitly_scalable`] | Controls whether conversion from `quantity<FromUnit, FromRep>` to `quantity<ToUnit, ToRep>` is implicit or explicit. | link:#mp_units-is_complex[`is_complex`] | | link:#mp_units-is_derived_from_specialization_of[`is_derived_from_specialization_of`] | | link:#mp_units-is_derived_from_specialization_of_v[`is_derived_from_specialization_of_v`] | | link:#mp_units-is_kind-0b[`is_kind`] | | link:#mp_units-is_same_v-0d[`is_same_v`] | | link:#mp_units-is_same_v-0e[`is_same_v<T, T>`] | | link:#mp_units-is_scalar[`is_scalar`] | | link:#mp_units-is_specialization_of-06[`is_specialization_of`] | | link:#mp_units-is_specialization_of-0b[`is_specialization_of<Type<Params...>, Type>`] | | link:#mp_units-is_specialization_of_v-01[`is_specialization_of_v`] | | link:#mp_units-is_specialization_of_v-08[`is_specialization_of_v<Type<Params...>, Type>`] | | link:#mp_units-is_tensor[`is_tensor`] | | link:#mp_units-is_value_preserving[`is_value_preserving`] | Specifies if a specific conversion between two types is representable without data loss | link:#mp_units-is_vector[`is_vector`] | | link:#mp_units-kind_of[`kind_of`] | | link:#mp_units-known_first_factor[`known_first_factor`] | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | link:#mp_units-mag-034[`mag<>`] | | link:#mp_units-mag-032[`mag`] | | link:#mp_units-mag_pi[`mag_pi`] | | link:#mp_units-mag_power[`mag_power`] | Create a Magnitude which is some rational number raised to a rational power. | link:#mp_units-mag_ratio[`mag_ratio`] | | link:#mp_units-magnitude-04[`magnitude`] | | link:#mp_units-modulus[`modulus`] | | link:#mp_units-natural_point_origin[`natural_point_origin`] | | link:#mp_units-non_negative-0d[`non_negative`] | | link:#mp_units-one-07[`one`] | | link:#mp_units-parts_per_million-0a[`parts_per_million`] | | link:#mp_units-per_mille-08[`per_mille`] | | link:#mp_units-percent-0a[`percent`] | | link:#mp_units-pi-0f[`pi`] | | link:#mp_units-pi_c-0e[`pi_c`] | | link:#mp_units-ppm[`ppm`] | | link:#mp_units-quantity_bounds[`quantity_bounds`] | Customization point for providing bounds on a quantity point relative to an origin. | link:#mp_units-real[`real`] | | link:#mp_units-reference_for-01f[`reference_for`] | | link:#mp_units-reference_for-0f[`reference_for<T>`] | | link:#mp_units-reference_for-09[`reference_for<quantity<R, Rep>>`] | | link:#mp_units-reference_for-018[`reference_for<quantity_point<R, PO, Rep>>`] | | link:#mp_units-space_before_unit_symbol[`space_before_unit_symbol`] | Puts a space ' ' sign before a unit symbol | link:#mp_units-treat_as_floating_point[`treat_as_floating_point`] | Specifies if a value of a type should be treated as a floating‐point value | link:#mp_units-unit_for-07[`unit_for`] | | link:#mp_units-unit_for-04[`unit_for<T>`] | | link:#mp_units-unit_for-08[`unit_for<quantity<R, Rep>>`] | | link:#mp_units-unit_for-01[`unit_for<quantity_point<R, PO, Rep>>`] | | link:#mp_units-zeroth_point_origin[`zeroth_point_origin`] | | link:#mp_units-π[`π`] | |=== == Concepts [cols="1,4"] |=== | Name| Description | link:#mp_units-ConstraintPolicy[`ConstraintPolicy`] | | link:#mp_units-Dimension[`Dimension`] | A concept matching all dimensions in the library. | link:#mp_units-DimensionOf[`DimensionOf`] | A concept checking if the argument is of the same dimension. | link:#mp_units-OverflowPolicy[`OverflowPolicy`] | | link:#mp_units-PointOrigin[`PointOrigin`] | A concept matching all quantity point origins in the library | link:#mp_units-PointOriginFor[`PointOriginFor`] | A concept matching all quantity point origins for a specified quantity type in the library | link:#mp_units-PrefixableUnit[`PrefixableUnit`] | A concept to be used to define prefixes for a unit | link:#mp_units-Quantity[`Quantity`] | A concept matching all quantities in the library | link:#mp_units-QuantityLike[`QuantityLike`] | A concept matching all external quantities like types | link:#mp_units-QuantityOf[`QuantityOf`] | A concept matching all quantities of the provided quantity spec | link:#mp_units-QuantityPoint[`QuantityPoint`] | A concept matching all quantity points in the library | link:#mp_units-QuantityPointLike[`QuantityPointLike`] | A concept matching all external quantity point like types | link:#mp_units-QuantityPointOf[`QuantityPointOf`] | A concept matching all quantity points of the provided property | link:#mp_units-QuantitySpec[`QuantitySpec`] | | link:#mp_units-QuantitySpecOf[`QuantitySpecOf`] | A concept matching all quantity specifications of a provided quantity spec value | link:#mp_units-Reference[`Reference`] | A concept matching all references in the library. | link:#mp_units-ReferenceOf[`ReferenceOf`] | A concept matching all references of the provided quantity spec | link:#mp_units-RepresentationOf[`RepresentationOf`] | | link:#mp_units-Unit[`Unit`] | A concept matching all unit types in the library | link:#mp_units-UnitMagnitude[`UnitMagnitude`] | Concept to detect whether T is a valid UnitMagnitude. | link:#mp_units-UnitOf[`UnitOf`] | A concept matching all units associated with the provided quantity spec |=== == Deduction Guides [cols=1] |=== | Name | link:#mp_units-basic_fixed_string-0d[`basic_fixed_string<CharT, N ‐ 1>`] | link:#mp_units-basic_fixed_string-0f[`basic_fixed_string<CharT, 1 + sizeof...(Rest)>`] | link:#mp_units-basic_fixed_string-07[`basic_fixed_string<CharT, N>`] | link:#mp_units-cartesian_vector-05[`cartesian_vector<std::common_type_t<Arg, Args...>>`] | link:#mp_units-quantity-05[`quantity<quantity_like_traits<Q>::reference, quantity_like_traits<Q>::rep>`] | link:#mp_units-quantity-07[`quantity<R, Value>`] | link:#mp_units-quantity-02[`quantity<R{}, Value>`] | link:#mp_units-quantity_point-04[`quantity_point<Q::reference, default_point_origin(Q::reference), Q::rep>`] | link:#mp_units-quantity_point-0cb[`quantity_point<quantity_point_like_traits<QP>::reference, quantity_point_like_traits<QP>::point_origin, quantity_point_like_traits<QP>::rep>`] | link:#mp_units-quantity_point-0c5[`quantity_point<Q::reference, PO{}, Q::rep>`] | link:#mp_units-safe_int-0b[`safe_int<T>`] | link:#mp_units-symbol_text-06[`symbol_text<1, 1>`] | link:#mp_units-symbol_text-07[`symbol_text<N, N>`] | link:#mp_units-symbol_text-03f[`symbol_text<N ‐ 1, N ‐ 1>`] | link:#mp_units-symbol_text-0f[`symbol_text<N, M>`] | link:#mp_units-symbol_text-01[`symbol_text<N ‐ 1, M ‐ 1>`] |=== == Synopsis Declared in `<mp‐units/ext/type_traits.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< bool B, typename T, typename F> using conditional = /* implementation-defined */::type<T, F>; ---- == Synopsis Declared in `<mp‐units/framework/symbolic_expression.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename T> using expr_type = /* implementation-defined */::type; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::size_t N> using fixed_string = link:#mp_units-basic_fixed_string-08[basic_fixed_string<char, N>]; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::size_t N> using fixed_u16string = link:#mp_units-basic_fixed_string-08[basic_fixed_string<char16_t, N>]; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::size_t N> using fixed_u32string = link:#mp_units-basic_fixed_string-08[basic_fixed_string<char32_t, N>]; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::size_t N> using fixed_u8string = link:#mp_units-basic_fixed_string-08[basic_fixed_string<char8_t, N>]; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::size_t N> using fixed_wstring = link:#mp_units-basic_fixed_string-08[basic_fixed_string<wchar_t, N>]; ---- == Synopsis Declared in `<mp‐units/ext/type_traits.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class T, class U> using is_same = std::bool_constant<is_same_v<T, U>>; ---- == Synopsis Declared in `<mp‐units/framework/customization_points.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Rep> using quantity_values = link:#mp_units-representation_values[representation_values<Rep>]; ---- == Synopsis Declared in `<mp‐units/framework/customization_points.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename T> using rep_for = /* implementation-defined */::type; ---- == Synopsis Declared in `<mp‐units/safe_int.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using safe_i16 = link:#mp_units-safe_int-09[safe_int<int16_t, safe_int_throw_policy>]; ---- == Synopsis Declared in `<mp‐units/safe_int.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using safe_i32 = link:#mp_units-safe_int-09[safe_int<int32_t, safe_int_throw_policy>]; ---- == Synopsis Declared in `<mp‐units/safe_int.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using safe_i64 = link:#mp_units-safe_int-09[safe_int<int64_t, safe_int_throw_policy>]; ---- == Synopsis Declared in `<mp‐units/safe_int.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using safe_i8 = link:#mp_units-safe_int-09[safe_int<int8_t, safe_int_throw_policy>]; ---- == Synopsis Declared in `<mp‐units/safe_int.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using safe_u16 = link:#mp_units-safe_int-09[safe_int<uint16_t, safe_int_throw_policy>]; ---- == Synopsis Declared in `<mp‐units/safe_int.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using safe_u32 = link:#mp_units-safe_int-09[safe_int<uint32_t, safe_int_throw_policy>]; ---- == Synopsis Declared in `<mp‐units/safe_int.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using safe_u64 = link:#mp_units-safe_int-09[safe_int<uint64_t, safe_int_throw_policy>]; ---- == Synopsis Declared in `<mp‐units/safe_int.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using safe_u8 = link:#mp_units-safe_int-09[safe_int<uint8_t, safe_int_throw_policy>]; ---- == Synopsis Declared in `<mp‐units/framework/symbol_text.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using text_encoding = link:#mp_units-character_set[character_set]; ---- == Synopsis Declared in `<mp‐units/ext/type_traits.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename T> requires std::is_object_v<T> using value_type_t = /* implementation-defined */::type; ---- == Synopsis Declared in `<mp‐units/ext/type_traits.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename T> requires (!std::is_pointer_v<T> && !std::is_array_v<T>) && requires { typename std::indirectly_readable_traits<T>::value_type; } using wrapped_type_t = std::indirectly_readable_traits<T>::value_type; ---- == Synopsis Declared in `<mp‐units/framework/quantity_point.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-QuantitySpec[QuantitySpec] auto QS> using zeroth_point_origin_ = link:#mp_units-natural_point_origin_[natural_point_origin_<QS>]; ---- == Synopsis Declared in `<mp‐units/framework/quantity_point.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-QuantitySpec[QuantitySpec] auto QS> struct absolute_point_origin : /* implementation-defined */ ---- == Base Classes [cols="1,4"] |=== |Name|Description | `/* implementation-defined */` | |=== == Static Data Members [cols=1] |=== | Name | link:#mp_units-absolute_point_origin-_quantity_spec_[`_quantity_spec_`] |=== == Derived Classes [cols="1,4"] |=== |Name|Description | link:#mp_units-natural_point_origin_[`natural_point_origin_`] | |=== == Synopsis Declared in `<mp‐units/framework/quantity_point.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static link:#mp_units-QuantitySpec[QuantitySpec] auto _quantity_spec_ = QS; ---- A dimension of a base quantity == Synopsis Declared in `<mp‐units/framework/dimension.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-symbol_text-032[symbol_text] Symbol> struct base_dimension : /* implementation-defined */ ---- == Description Base quantity is a quantity in a conventionally chosen subset of a given system of quantities, where no quantity in the subset can be expressed in terms of the other quantities within that subset. They are referred to as being mutually independent since a base quantity cannot be expressed as a product of powers of the other base quantities. `Symbol` template parameter is an unique identifier of the base dimension. The same identifiers can be multiplied and divided which will result with an adjustment of its factor in an exponent of a `derived_dimension` (in case of zero the dimension will be simplified and removed from further analysis of current expresion). User should derive a strong type from this class template rather than use it directly in the source code. For example: [,cpp] ---- {.cpp} inline constexpr struct dim_length final : base_dimension<"L"> {} dim_length; inline constexpr struct dim_time final : base_dimension<"T"> {} dim_time; inline constexpr struct dim_mass final : base_dimension<"M"> {} dim_mass; ---- [NOTE] ==== A common convention in this library is to assign the same name for a type and an object of this type. Besides defining them user never works with the dimension types in the source code. All operations are done on the objects. Contrarily, the dimension types are the only one visible in the compilation errors. Having them of the same names improves user experience and somehow blurs those separate domains. ==== == Base Classes [cols="1,4"] |=== |Name|Description | `/* implementation-defined */` | |=== == Static Data Members [cols="1,4"] |=== | Name| Description | link:#mp_units-base_dimension-_symbol_[`_symbol_`] | Unique base dimension identifier |=== == Template Parameters [cols="1,4"] |=== |Name|Description | *Symbol* | an unique identifier of the base dimension used to provide dimensional analysis support |=== Unique base dimension identifier == Synopsis Declared in `<mp‐units/framework/dimension.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static auto _symbol_ = Symbol; ---- A compile‐time fixed string == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< typename CharT, std::size_t N> class basic_fixed_string; ---- == Types [cols=1] |=== | Name | link:#mp_units-basic_fixed_string-08-const_iterator[`const_iterator`] | link:#mp_units-basic_fixed_string-08-const_pointer[`const_pointer`] | link:#mp_units-basic_fixed_string-08-const_reference[`const_reference`] | link:#mp_units-basic_fixed_string-08-const_reverse_iterator[`const_reverse_iterator`] | link:#mp_units-basic_fixed_string-08-difference_type[`difference_type`] | link:#mp_units-basic_fixed_string-08-iterator[`iterator`] | link:#mp_units-basic_fixed_string-08-pointer[`pointer`] | link:#mp_units-basic_fixed_string-08-reference[`reference`] | link:#mp_units-basic_fixed_string-08-reverse_iterator[`reverse_iterator`] | link:#mp_units-basic_fixed_string-08-size_type[`size_type`] | link:#mp_units-basic_fixed_string-08-value_type[`value_type`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-basic_fixed_string-08-2constructor-01[`basic_fixed_string`] [.small]#[constructor]# | Constructors | link:#mp_units-basic_fixed_string-08-operator_assign[`operator=`] | Copy assignment operator | link:#mp_units-basic_fixed_string-08-at[`at`] | | link:#mp_units-basic_fixed_string-08-back[`back`] | | link:#mp_units-basic_fixed_string-08-begin[`begin`] | | link:#mp_units-basic_fixed_string-08-c_str[`c_str`] | | link:#mp_units-basic_fixed_string-08-cbegin[`cbegin`] | | link:#mp_units-basic_fixed_string-08-cend[`cend`] | | link:#mp_units-basic_fixed_string-08-crbegin[`crbegin`] | | link:#mp_units-basic_fixed_string-08-crend[`crend`] | | link:#mp_units-basic_fixed_string-08-data[`data`] | | link:#mp_units-basic_fixed_string-08-end[`end`] | | link:#mp_units-basic_fixed_string-08-front[`front`] | | link:#mp_units-basic_fixed_string-08-operator_subs[`operator[]`] | | link:#mp_units-basic_fixed_string-08-rbegin[`rbegin`] | | link:#mp_units-basic_fixed_string-08-rend[`rend`] | | link:#mp_units-basic_fixed_string-08-swap[`swap`] | | link:#mp_units-basic_fixed_string-08-view[`view`] | | link:#mp_units-basic_fixed_string-08-2conversion[`operator std::basic_string_view<CharT>`] | Conversion to `basic_string_view` |=== == Data Members [cols=1] |=== | Name | link:#mp_units-basic_fixed_string-08-data_[`data_`] |=== == Static Data Members [cols=1] |=== | Name | link:#mp_units-basic_fixed_string-08-empty[`empty`] | link:#mp_units-basic_fixed_string-08-length[`length`] | link:#mp_units-basic_fixed_string-08-max_size[`max_size`] | link:#mp_units-basic_fixed_string-08-size[`size`] |=== == Friends [cols="1,4"] |=== |Name|Description | `link:#mp_units-operator_lshift-09[mp_units::operator<<]` | Stream insertion operator | `link:#mp_units-operator_3way-05[mp_units::operator<=>]` | Three‐way comparison operator | `link:#mp_units-operator_3way-0de[mp_units::operator<=>]` | Three‐way comparison operator | `link:#mp_units-operator_eq-03d[mp_units::operator==]` | Equality operator | `link:#mp_units-operator_eq-032[mp_units::operator==]` | Equality operator | `link:#mp_units-operator_plus-067[mp_units::operator+]` | Addition operator | `link:#mp_units-operator_plus-0ec[mp_units::operator+]` | Addition operator | `link:#mp_units-operator_plus-07[mp_units::operator+]` | Addition operator | `link:#mp_units-operator_plus-0e3[mp_units::operator+]` | Addition operator | `link:#mp_units-operator_plus-0e6[mp_units::operator+]` | Addition operator |=== == Template Parameters [cols="1,4"] |=== |Name|Description | *CharT* | Character type to be used by the string | *N* | The size of the string |=== == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using const_iterator = link:#mp_units-basic_fixed_string-08-value_type[value_type] const*; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using const_pointer = link:#mp_units-basic_fixed_string-08-value_type[value_type] const*; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using const_reference = link:#mp_units-basic_fixed_string-08-value_type[value_type] const&; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using const_reverse_iterator = std::reverse_iterator<const_iterator>; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using difference_type = std::ptrdiff_t; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using iterator = link:#mp_units-basic_fixed_string-08-const_iterator[const_iterator]; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using pointer = link:#mp_units-basic_fixed_string-08-value_type[value_type]*; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using reference = link:#mp_units-basic_fixed_string-08-value_type[value_type]&; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using reverse_iterator = link:#mp_units-basic_fixed_string-08-const_reverse_iterator[const_reverse_iterator]; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using size_type = std::size_t; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using value_type = CharT; ---- Constructors == Synopses Declared in `<mp‐units/ext/fixed_string.h>` Copy constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-basic_fixed_string-08-2constructor-08[basic_fixed_string](link:#mp_units-basic_fixed_string-08[basic_fixed_string] const& other) noexcept = default; ---- [.small]#link:#mp_units-basic_fixed_string-08-2constructor-08[_» more..._]# Construct from `CharT` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- consteval explicit(false) link:#mp_units-basic_fixed_string-08-2constructor-0f[basic_fixed_string](CharT const(& txt)[N + 1]) noexcept; ---- [.small]#link:#mp_units-basic_fixed_string-08-2constructor-0f[_» more..._]# Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::same_as<CharT>... Chars> requires (sizeof...(Chars) == N) && (... && !std::is_pointer_v<Chars>) constexpr explicit link:#mp_units-basic_fixed_string-08-2constructor-02[basic_fixed_string](Chars... chars) noexcept; ---- [.small]#link:#mp_units-basic_fixed_string-08-2constructor-02[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::ranges::input_range R> requires std::same_as<std::ranges::range_value_t<R>, CharT> constexpr link:#mp_units-basic_fixed_string-08-2constructor-09[basic_fixed_string]( std::from_range_t, R&& r); ---- [.small]#link:#mp_units-basic_fixed_string-08-2constructor-09[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< std::input_iterator It, std::sentinel_for<It> S> requires std::same_as<std::iter_value_t<It>, CharT> constexpr link:#mp_units-basic_fixed_string-08-2constructor-05[basic_fixed_string]( It begin, S end); ---- [.small]#link:#mp_units-basic_fixed_string-08-2constructor-05[_» more..._]# Copy constructor == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr basic_fixed_string(link:#mp_units-basic_fixed_string-08[basic_fixed_string] const& other) noexcept = default; ---- == Parameters [cols="1,4"] |=== |Name|Description | *other* | The object to copy construct from |=== Construct from `CharT` == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- consteval explicit(false) basic_fixed_string(CharT const(& txt)[N + 1]) noexcept; ---- == Parameters [cols="1,4"] |=== |Name|Description | *txt* | The object to copy construct from |=== Default constructor == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::same_as<CharT>... Chars> requires (sizeof...(Chars) == N) && (... && !std::is_pointer_v<Chars>) constexpr explicit basic_fixed_string(Chars... chars) noexcept; ---- == Parameters [cols="1,4"] |=== |Name|Description | *chars* | The object to construct from |=== == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::ranges::input_range R> requires std::same_as<std::ranges::range_value_t<R>, CharT> constexpr basic_fixed_string( std::from_range_t, R&& r); ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< std::input_iterator It, std::sentinel_for<It> S> requires std::same_as<std::iter_value_t<It>, CharT> constexpr basic_fixed_string( It begin, S end); ---- Copy assignment operator == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-basic_fixed_string-08[basic_fixed_string]& operator=(link:#mp_units-basic_fixed_string-08[basic_fixed_string] const& other) noexcept = default; ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *other* | The object to copy assign from |=== == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_reference[const_reference] at(link:#mp_units-basic_fixed_string-08-size_type[size_type] pos) const; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_reference[const_reference] back() const; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_iterator[const_iterator] begin() const noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_pointer[const_pointer] c_str() const noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_iterator[const_iterator] cbegin() const noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_iterator[const_iterator] cend() const noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_reverse_iterator[const_reverse_iterator] crbegin() const noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_reverse_iterator[const_reverse_iterator] crend() const noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_pointer[const_pointer] data() const noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_iterator[const_iterator] end() const noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_reference[const_reference] front() const; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_reference[const_reference] operator[](link:#mp_units-basic_fixed_string-08-size_type[size_type] pos) const; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_reverse_iterator[const_reverse_iterator] rbegin() const noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-basic_fixed_string-08-const_reverse_iterator[const_reverse_iterator] rend() const noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr void swap(link:#mp_units-basic_fixed_string-08[basic_fixed_string]& s) noexcept; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr std::basic_string_view<CharT> view() const noexcept; ---- Conversion to `basic_string_view` == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr explicit(false) operator std::basic_string_view<CharT>() const noexcept; ---- == Return Value A non‐owning reference to a string. == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- CharT data_[N + 1] = {}; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static std::bool_constant<N == 0> empty = {}; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static std::integral_constant<size_type, N> length = {}; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static std::integral_constant<size_type, N> max_size = {}; ---- == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static std::integral_constant<size_type, N> size = {}; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct binomial_distribution : std::binomial_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::binomial_distribution<Q::rep>` | A discrete binomial random number distribution. |=== == Types [cols=1] |=== | Name | link:#mp_units-binomial_distribution-0e-base[`base`] | link:#mp_units-binomial_distribution-0e-rep[`rep`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-binomial_distribution-0e-2constructor-08[`binomial_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-binomial_distribution-0e-max[`max`] | | link:#mp_units-binomial_distribution-0e-min[`min`] | | link:#mp_units-binomial_distribution-0e-operator_call[`operator()`] | | link:#mp_units-binomial_distribution-0e-t[`t`] | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using base = std::binomial_distribution<rep>; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using rep = Q::rep; ---- Constructors == Synopses Declared in `<mp‐units/random.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-binomial_distribution-0e-2constructor-0b[binomial_distribution](); ---- [.small]#link:#mp_units-binomial_distribution-0e-2constructor-0b[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-binomial_distribution-0e-2constructor-0c[binomial_distribution]( Q const& t, double p); ---- [.small]#link:#mp_units-binomial_distribution-0e-2constructor-0c[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- binomial_distribution(); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- binomial_distribution( Q const& t, double p); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q max() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q min() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Generator> Q operator()(Generator& g); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q t() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::integral<typename Q::rep> struct binomial_distribution : std::binomial_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::binomial_distribution<Q::rep>` | A discrete binomial random number distribution. |=== == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template</* implementation-defined */ T = double> class cartesian_vector : public /* implementation-defined */ ---- == Base Classes [cols="1,4"] |=== |Name|Description | `/* implementation-defined */` | |=== == Types [cols=1] |=== | Name | link:#mp_units-cartesian_vector-08-value_type[`value_type`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-cartesian_vector-08-2constructor-0b[`cartesian_vector`] [.small]#[constructor]# | Constructors | link:#mp_units-cartesian_vector-08-operator_assign-0b[`operator=`] | Assignment operators | link:#mp_units-cartesian_vector-08-magnitude[`magnitude`] | | link:#mp_units-cartesian_vector-08-norm[`norm`] | | link:#mp_units-cartesian_vector-08-operator_star_eq[`operator*=`] | Multiplication assignment operator | link:#mp_units-cartesian_vector-08-operator_plus[`operator+`] | Unary plus operator | link:#mp_units-cartesian_vector-08-operator_plus_eq[`operator+=`] | Addition assignment operator | link:#mp_units-cartesian_vector-08-operator_minus[`operator‐`] | Unary minus operator | link:#mp_units-cartesian_vector-08-operator_minus_eq[`operator‐=`] | Subtraction assignment operator | link:#mp_units-cartesian_vector-08-operator_slash_eq[`operator/=`] | Division assignment operator | link:#mp_units-cartesian_vector-08-operator_subs-0c[`operator[]`] | Subscript operators | link:#mp_units-cartesian_vector-08-unit[`unit`] | |=== == Data Members [cols=1] |=== | Name | link:#mp_units-cartesian_vector-08-_coordinates_[`_coordinates_`] |=== == Friends [cols="1,4"] |=== |Name|Description | `link:#mp_units-operator_lshift-03c[mp_units::operator<<]` | Stream insertion operator | `link:#mp_units-unit_vector[mp_units::unit_vector]` | | `link:#mp_units-magnitude-0a[mp_units::magnitude]` | | `link:#mp_units-norm[mp_units::norm]` | |=== == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using value_type = T; ---- Constructors == Synopses Declared in `<mp‐units/cartesian_vector.h>` Construct from `cartesian_vector` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename U> requires std::constructible_from<T, U> constexpr explicit(!std::convertible_to<U, T>) link:#mp_units-cartesian_vector-08-2constructor-01[cartesian_vector](link:#mp_units-cartesian_vector-08[cartesian_vector<U>] const& other); ---- [.small]#link:#mp_units-cartesian_vector-08-2constructor-01[_» more..._]# Construct from `cartesian_vector` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename U> requires std::constructible_from<T, U> constexpr explicit(!std::convertible_to<U, T>) link:#mp_units-cartesian_vector-08-2constructor-0c[cartesian_vector](link:#mp_units-cartesian_vector-08[cartesian_vector<U>]&& other); ---- [.small]#link:#mp_units-cartesian_vector-08-2constructor-0c[_» more..._]# Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename... Args> requires (... && std::constructible_from<T, Args>) constexpr explicit(!(... && std::convertible_to<Args, T>)) link:#mp_units-cartesian_vector-08-2constructor-04[cartesian_vector](Args&&... args); ---- [.small]#link:#mp_units-cartesian_vector-08-2constructor-04[_» more..._]# Construct from `cartesian_vector` == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename U> requires std::constructible_from<T, U> constexpr explicit(!std::convertible_to<U, T>) cartesian_vector(link:#mp_units-cartesian_vector-08[cartesian_vector<U>] const& other); ---- == Parameters [cols="1,4"] |=== |Name|Description | *other* | The object to copy construct from |=== Construct from `cartesian_vector` == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename U> requires std::constructible_from<T, U> constexpr explicit(!std::convertible_to<U, T>) cartesian_vector(link:#mp_units-cartesian_vector-08[cartesian_vector<U>]&& other); ---- == Parameters [cols="1,4"] |=== |Name|Description | *other* | The object to move construct from |=== Default constructor == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename... Args> requires (... && std::constructible_from<T, Args>) constexpr explicit(!(... && std::convertible_to<Args, T>)) cartesian_vector(Args&&... args); ---- == Parameters [cols="1,4"] |=== |Name|Description | *args* | The object to move construct from |=== Assignment operators == Synopses Declared in `<mp‐units/cartesian_vector.h>` Assignment operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::convertible_to<T> U> constexpr link:#mp_units-cartesian_vector-08[cartesian_vector]& link:#mp_units-cartesian_vector-08-operator_assign-07[operator=](link:#mp_units-cartesian_vector-08[cartesian_vector<U>] const& other); ---- [.small]#link:#mp_units-cartesian_vector-08-operator_assign-07[_» more..._]# Assignment operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::convertible_to<T> U> constexpr link:#mp_units-cartesian_vector-08[cartesian_vector]& link:#mp_units-cartesian_vector-08-operator_assign-0d[operator=](link:#mp_units-cartesian_vector-08[cartesian_vector<U>]&& other); ---- [.small]#link:#mp_units-cartesian_vector-08-operator_assign-0d[_» more..._]# Assignment operator == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::convertible_to<T> U> constexpr link:#mp_units-cartesian_vector-08[cartesian_vector]& operator=(link:#mp_units-cartesian_vector-08[cartesian_vector<U>] const& other); ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *other* | The object to copy assign from |=== Assignment operator == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<std::convertible_to<T> U> constexpr link:#mp_units-cartesian_vector-08[cartesian_vector]& operator=(link:#mp_units-cartesian_vector-08[cartesian_vector<U>]&& other); ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *other* | The object to move assign from |=== == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr auto magnitude() const requires requires(const cartesian_vector& v) { v.norm(); }; ---- == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr auto norm() const requires requires(T t) { requires requires { hypot(t, t, t); } || requires { std::hypot(t, t, t); }; }; ---- Multiplication assignment operator == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename U> requires requires(T t, U u) { { t *= u } ‐> std::same_as<T&>; } constexpr link:#mp_units-cartesian_vector-08[cartesian_vector]& operator*=(U const& value); ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *value* | The right operand |=== Unary plus operator == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-cartesian_vector-08[cartesian_vector] operator+() const; ---- == Return Value Another instance of the object Addition assignment operator == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename U> requires requires(T t, U u) { { t += u } ‐> std::same_as<T&>; } constexpr link:#mp_units-cartesian_vector-08[cartesian_vector]& operator+=(link:#mp_units-cartesian_vector-08[cartesian_vector<U>] const& other); ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *other* | The right operand |=== Unary minus operator == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-cartesian_vector-08[cartesian_vector] operator‐() const; ---- == Return Value Another instance of the object Subtraction assignment operator == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename U> requires requires(T t, U u) { { t ‐= u } ‐> std::same_as<T&>; } constexpr link:#mp_units-cartesian_vector-08[cartesian_vector]& operator‐=(link:#mp_units-cartesian_vector-08[cartesian_vector<U>] const& other); ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *other* | The right operand |=== Division assignment operator == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename U> requires requires(T t, U u) { { t /= u } ‐> std::same_as<T&>; } constexpr link:#mp_units-cartesian_vector-08[cartesian_vector]& operator/=(U const& value); ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *value* | The right operand |=== Subscript operators == Synopses Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr T& link:#mp_units-cartesian_vector-08-operator_subs-0f[operator[]](std::size_t i); ---- [.small]#link:#mp_units-cartesian_vector-08-operator_subs-0f[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr T const& link:#mp_units-cartesian_vector-08-operator_subs-01[operator[]](std::size_t i) const; ---- [.small]#link:#mp_units-cartesian_vector-08-operator_subs-01[_» more..._]# == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr T& operator[](std::size_t i); ---- == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr T const& operator[](std::size_t i) const; ---- == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr link:#mp_units-cartesian_vector-08[cartesian_vector] unit() const requires treat_as_floating_point<T>; ---- == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- T _coordinates_[3]; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct cauchy_distribution : std::cauchy_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::cauchy_distribution<Q::rep>` | A cauchy_distribution random number distribution. |=== == Types [cols=1] |=== | Name | link:#mp_units-cauchy_distribution-04-base[`base`] | link:#mp_units-cauchy_distribution-04-rep[`rep`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-cauchy_distribution-04-2constructor-04[`cauchy_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-cauchy_distribution-04-a[`a`] | | link:#mp_units-cauchy_distribution-04-b[`b`] | | link:#mp_units-cauchy_distribution-04-max[`max`] | | link:#mp_units-cauchy_distribution-04-min[`min`] | | link:#mp_units-cauchy_distribution-04-operator_call[`operator()`] | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using base = std::cauchy_distribution<rep>; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using rep = Q::rep; ---- Constructors == Synopses Declared in `<mp‐units/random.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-cauchy_distribution-04-2constructor-0a[cauchy_distribution](); ---- [.small]#link:#mp_units-cauchy_distribution-04-2constructor-0a[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-cauchy_distribution-04-2constructor-00[cauchy_distribution]( Q const& a, Q const& b); ---- [.small]#link:#mp_units-cauchy_distribution-04-2constructor-00[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- cauchy_distribution(); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- cauchy_distribution( Q const& a, Q const& b); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q a() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q b() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q max() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q min() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Generator> Q operator()(Generator& g); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::floating_point<typename Q::rep> struct cauchy_distribution : std::cauchy_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::cauchy_distribution<Q::rep>` | A cauchy_distribution random number distribution. |=== Policy that checks the value is within [min, max]and reports violations. == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> struct check_in_range; ---- == Description If the quantity's representation type has a `constraint_violation_handler` specialization, the handler's `on_violation()` is called on out‐of‐bounds values (providing guaranteed enforcement regardless of build mode). Otherwise, falls back to `MP_UNITS_EXPECTS`, which may be disabled in release builds. Example: [,cpp] ---- {cpp} // With constrained rep → throws std::domain_error on violation // With plain double rep → asserts via MP_UNITS_EXPECTS (may be no-op in release) template<> constexpr auto quantity_bounds = check_in_range{-90 * deg, 90 * deg}; ---- == Member Functions [cols=1] |=== | Name | link:#mp_units-check_in_range-operator_call[`operator()`] |=== == Data Members [cols=1] |=== | Name | link:#mp_units-check_in_range-max[`max`] | link:#mp_units-check_in_range-min[`min`] |=== == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] V> constexpr V operator()(V v) const; ---- == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- Q max; ---- == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- Q min; ---- Policy that checks the value is ≥ 0 and reports violations. == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct check_non_negative; ---- == Description Intended for quantities that are inherently non‐negative (e.g., _length_, _mass_, _duration_). Automatically applied to `natural_point_origin<QS>` when `QS` is tagged `non_negative` in the ISQ. If the quantity's representation type has a `constraint_violation_handler` specialization, the handler's `on_violation()` is called on negative values (providing guaranteed enforcement regardless of build mode). Otherwise, falls back to `MP_UNITS_EXPECTS`, which may be disabled in release builds. == Member Functions [cols=1] |=== | Name | link:#mp_units-check_non_negative-operator_call[`operator()`] |=== == Data Members [cols=1] |=== | Name | link:#mp_units-check_non_negative-min[`min`] |=== == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] V> constexpr V operator()(V v) const; ---- == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- /* implementation-defined */ min; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct chi_squared_distribution : std::chi_squared_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::chi_squared_distribution<Q::rep>` | A chi_squared_distribution random number distribution. |=== == Types [cols=1] |=== | Name | link:#mp_units-chi_squared_distribution-0b-base[`base`] | link:#mp_units-chi_squared_distribution-0b-rep[`rep`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-chi_squared_distribution-0b-2constructor-0b[`chi_squared_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-chi_squared_distribution-0b-max[`max`] | | link:#mp_units-chi_squared_distribution-0b-min[`min`] | | link:#mp_units-chi_squared_distribution-0b-operator_call[`operator()`] | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using base = std::chi_squared_distribution<rep>; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using rep = Q::rep; ---- Constructors == Synopses Declared in `<mp‐units/random.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-chi_squared_distribution-0b-2constructor-03[chi_squared_distribution](); ---- [.small]#link:#mp_units-chi_squared_distribution-0b-2constructor-03[_» more..._]# Construct from `rep` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- explicit link:#mp_units-chi_squared_distribution-0b-2constructor-06[chi_squared_distribution](link:#mp_units-chi_squared_distribution-0b-rep[rep] const& n); ---- [.small]#link:#mp_units-chi_squared_distribution-0b-2constructor-06[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- chi_squared_distribution(); ---- Construct from `rep` == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- explicit chi_squared_distribution(link:#mp_units-chi_squared_distribution-0b-rep[rep] const& n); ---- == Parameters [cols="1,4"] |=== |Name|Description | *n* | The object to copy construct from |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q max() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q min() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Generator> Q operator()(Generator& g); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::floating_point<typename Q::rep> struct chi_squared_distribution : std::chi_squared_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::chi_squared_distribution<Q::rep>` | A chi_squared_distribution random number distribution. |=== Policy that clamps the value to [0, ∞).] == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct clamp_non_negative; ---- == Description Saturates negative values to zero. Use when small negative values can arise from floating‐point rounding in a naturally non‐negative domain (e.g., a computed energy that rounds to −1e−15 J should be treated as 0 J rather than signalling an error). == Member Functions [cols=1] |=== | Name | link:#mp_units-clamp_non_negative-operator_call[`operator()`] |=== == Data Members [cols=1] |=== | Name | link:#mp_units-clamp_non_negative-min[`min`] |=== == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] V> constexpr V operator()(V v) const; ---- == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- /* implementation-defined */ min; ---- Policy that clamps the value to [min, max]. == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> struct clamp_to_range; ---- == Description Saturates out‐of‐range values to the nearest boundary. Use when you want to "correct" invalid values rather than signal an error. == Member Functions [cols=1] |=== | Name | link:#mp_units-clamp_to_range-operator_call[`operator()`] |=== == Data Members [cols=1] |=== | Name | link:#mp_units-clamp_to_range-max[`max`] | link:#mp_units-clamp_to_range-min[`min`] |=== == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] V> constexpr V operator()(V v) const; ---- == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- Q max; ---- == Synopsis Declared in `<mp‐units/overflow_policies.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- Q min; ---- Measurement unit for an accumulation of two quantities of different units == Synopsis Declared in `<mp‐units/framework/unit.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< link:#mp_units-Unit[Unit] U1, link:#mp_units-Unit[Unit] U2, link:#mp_units-Unit[Unit]... Rest> struct common_unit final : ::_base_type_ ---- == Description While adding two quantities of different units we can often identify which of those unit should be used to prevent data truncation. For example, adding `1 * m + 1 * mm` will end up in a quantity expressed in millimeters. However, for some cases this is not possible. Choosing any of the units from the arguments of the addition would result in a data truncation. For example, a common unit for `1 * km + 1 * mi` is `[8/125]m`. Instead of returning such a complex unit type the library will return a `common_unit<mi, km>`. This type is convertible to both `mi` and `km` without risking data truncation, but is not equal to any of them. [NOTE] ==== User should not instantiate this type! It is not exported from the C++ module. The library will instantiate this type automatically based on the unit arithmetic equation provided by the user. ==== == Base Classes [cols="1,4"] |=== |Name|Description | `::_base_type_` | |=== == Types [cols=1] |=== | Name | link:#mp_units-common_unit-_base_type_[`_base_type_`] |=== == Static Data Members [cols=1] |=== | Name | link:#mp_units-common_unit-_common_unit_[`_common_unit_`] |=== == Synopsis Declared in `<mp‐units/framework/unit.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using _base_type_ = link:#mp_units-common_unit[common_unit]; ---- == Synopsis Declared in `<mp‐units/framework/unit.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static auto _common_unit_ = detail::common_unit_scaled_result<U1, U2, Rest...>; ---- A transparent wrapper that carries an error policy for domain constraint enforcement. == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< typename T, link:#mp_units-ConstraintPolicy[ConstraintPolicy] ErrorPolicy = link:#mp_units-throw_policy[throw_policy]> class constrained; ---- == Description This wrapper does not check anything itself. It serves as a signal to the mp‐units library that domain constraint violations should be reported via the ErrorPolicy rather than through precondition checks. All arithmetic operations are forwarded to the underlying type T. == Types [cols=1] |=== | Name | link:#mp_units-constrained-error_policy[`error_policy`] | link:#mp_units-constrained-value_type[`value_type`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-constrained-2constructor-00[`constrained`] [.small]#[constructor]# | Constructors | link:#mp_units-constrained-operator_mod_eq[`operator%=`] | Modulus assignment operator | link:#mp_units-constrained-operator_star_eq[`operator*=`] | Multiplication assignment operator | link:#mp_units-constrained-operator_inc-0f[`operator++`] | Increment operators | link:#mp_units-constrained-operator_plus_eq[`operator+=`] | Addition assignment operator | link:#mp_units-constrained-operator_dec-0f[`operator‐‐`] | Decrement operators | link:#mp_units-constrained-operator_minus_eq[`operator‐=`] | Subtraction assignment operator | link:#mp_units-constrained-operator_slash_eq[`operator/=`] | Division assignment operator | link:#mp_units-constrained-value[`value`] | | link:#mp_units-constrained-2conversion[`operator T`] | Conversion to `T` |=== == Data Members [cols=1] |=== | Name | link:#mp_units-constrained-value_[`value_`] |=== == Friends [cols="1,4"] |=== |Name|Description | `link:#mp_units-operator_minus-0e[mp_units::operator‐]` | Unary minus operator | `link:#mp_units-operator_plus-08[mp_units::operator+]` | Unary plus operator |=== == Template Parameters [cols="1,4"] |=== |Name|Description | *T* | the underlying representation type | *ErrorPolicy* | policy type satisfying ConstraintPolicy (provides static on_constraint_violation(std::string_view)) |=== == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using error_policy = ErrorPolicy; ---- == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using value_type = T; ---- Constructors == Synopses Declared in `<mp‐units/constrained.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-constrained-2constructor-0c[constrained]() = default; ---- [.small]#link:#mp_units-constrained-2constructor-0c[_» more..._]# Construct from `T` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr explicit(false) link:#mp_units-constrained-2constructor-08[constrained](T v) noexcept; ---- [.small]#link:#mp_units-constrained-2constructor-08[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constrained() = default; ---- Construct from `T` == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr explicit(false) constrained(T v) noexcept; ---- == Parameters [cols="1,4"] |=== |Name|Description | *v* | The object to construct from |=== Modulus assignment operator == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained]& operator%=(link:#mp_units-constrained[constrained] const& rhs) requires requires(T& a, const T b) { { a %= b } ‐> std::same_as<T&>; }; ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *rhs* | The right operand |=== Multiplication assignment operator == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained]& operator*=(link:#mp_units-constrained[constrained] const& rhs) requires requires(T& a, const T b) { { a *= b } ‐> std::same_as<T&>; }; ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *rhs* | The right operand |=== Increment operators == Synopses Declared in `<mp‐units/constrained.h>` Increment operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained]& link:#mp_units-constrained-operator_inc-02[operator++]() requires requires(T& v) { { ++v } ‐> std::same_as<T&>; }; ---- [.small]#link:#mp_units-constrained-operator_inc-02[_» more..._]# Increment operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained<decltype(std::declval<T&>()++), ErrorPolicy>] link:#mp_units-constrained-operator_inc-09[operator++](int); ---- [.small]#link:#mp_units-constrained-operator_inc-09[_» more..._]# Increment operator == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained]& operator++() requires requires(T& v) { { ++v } ‐> std::same_as<T&>; }; ---- == Return Value Reference to the current object Increment operator == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained<decltype(std::declval<T&>()++), ErrorPolicy>] operator++(int); ---- == Return Value Another instance of the object Addition assignment operator == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained]& operator+=(link:#mp_units-constrained[constrained] const& rhs) requires requires(T& a, const T b) { { a += b } ‐> std::same_as<T&>; }; ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *rhs* | The right operand |=== Decrement operators == Synopses Declared in `<mp‐units/constrained.h>` Decrement operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained]& link:#mp_units-constrained-operator_dec-0e8[operator‐‐]() requires requires(T& v) { { ‐‐v } ‐> std::same_as<T&>; }; ---- [.small]#link:#mp_units-constrained-operator_dec-0e8[_» more..._]# Decrement operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained<decltype(std::declval<T&>()‐‐), ErrorPolicy>] link:#mp_units-constrained-operator_dec-0e4[operator‐‐](int); ---- [.small]#link:#mp_units-constrained-operator_dec-0e4[_» more..._]# Decrement operator == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained]& operator‐‐() requires requires(T& v) { { ‐‐v } ‐> std::same_as<T&>; }; ---- == Return Value Reference to the current object Decrement operator == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained<decltype(std::declval<T&>()‐‐), ErrorPolicy>] operator‐‐(int); ---- == Return Value Another instance of the object Subtraction assignment operator == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained]& operator‐=(link:#mp_units-constrained[constrained] const& rhs) requires requires(T& a, const T b) { { a ‐= b } ‐> std::same_as<T&>; }; ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *rhs* | The right operand |=== Division assignment operator == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr link:#mp_units-constrained[constrained]& operator/=(link:#mp_units-constrained[constrained] const& rhs) requires requires(T& a, const T b) { { a /= b } ‐> std::same_as<T&>; }; ---- == Return Value Reference to the current object == Parameters [cols="1,4"] |=== |Name|Description | *rhs* | The right operand |=== == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr T value() const noexcept; ---- Conversion to `T` == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr explicit(false) operator T() const noexcept; ---- == Return Value The object converted to `T` == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- T value_ = {}; ---- Customization point for handling domain constraint violations. == Synopsis Declared in `<mp‐units/framework/customization_points.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Rep> struct constraint_violation_handler; ---- == Description The library calls `constraint_violation_handler<Rep>::on_violation(msg)` when a domain constraint is violated (e.g., out‐of‐bounds value, non‐negativity). No default implementation is provided. When no specialization exists for a given Rep, the library uses MP_UNITS_EXPECTS directly (which may compile to nothing in release builds). Specializing this trait opts the type into guaranteed enforcement. == Template Parameters [cols="1,4"] |=== |Name|Description | *Rep* | the representation type |=== == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< typename T, typename ErrorPolicy> struct link:#mp_units-constraint_violation_handler-0c[constraint_violation_handler]<link:#mp_units-constrained[constrained<T, ErrorPolicy>]>; ---- == Static Member Functions [cols=1] |=== | Name | link:#mp_units-constraint_violation_handler-04-on_violation[`on_violation`] |=== == Synopsis Declared in `<mp‐units/constrained.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr static void on_violation(std::string_view msg); ---- == Synopsis Declared in `<mp‐units/safe_int.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< typename T, typename ErrorPolicy> struct link:#mp_units-constraint_violation_handler-0c[constraint_violation_handler]<link:#mp_units-safe_int-09[safe_int<T, ErrorPolicy>]>; ---- == Static Member Functions [cols=1] |=== | Name | link:#mp_units-constraint_violation_handler-0a-on_violation[`on_violation`] |=== == Synopsis Declared in `<mp‐units/safe_int.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr static void on_violation(std::string_view msg); ---- A dimension of a derived quantity == Synopsis Declared in `<mp‐units/framework/dimension.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template</* implementation-defined */... Expr> struct derived_dimension final : /* implementation-defined */ , /* implementation-defined */ ---- == Description Derived dimension is an expression of the dependence of a quantity on the base quantities of a system of quantities as a product of powers of factors corresponding to the base quantities, omitting any numerical factors. Instead of using a raw list of exponents this library decided to use symbolic expression syntax to make types more digestable for the user. The positive exponents are ordered first and all negative exponents are put as a list into the `per<...>` class template. If a power of exponent is different than `1` the dimension type is enclosed in `power<Dim, Num, Den>` class template. Otherwise, it is just put directly in the list without any wrapper. There is also one special case. In case all of the exponents are negative than the `dimension_one` being a dimension of a dimensionless quantity is put in the front to increase the readability. For example: [,cpp] ---- {.cpp} using frequency = decltype(inverse(dim_time)); using speed = decltype(dim_length / dim_time); using acceleration = decltype(dim_speed / dim_time); using force = decltype(dim_mass * dim_acceleration); using energy = decltype(dim_force * dim_length); using moment_of_force = decltype(dim_length * dim_force); using torque = decltype(dim_moment_of_force); ---- * `frequency` will be derived from type `derived_dimension<dimension_one, per<dim_time>>` * `speed` will be derived from type `derived_dimension<dim_length, per<dim_time>>` * `acceleration` will be derived from type `derived_dimension<dim_length, per<power<dim_time, 2>>>` * `force` will be derived from type `derived_dimension<dim_length, dim_mass, per<power<dim_time, 2>>>` * `energy` will be derived from type `derived_dimension<power<dim_length, 2>, dim_mass, per<power<dim_time, 2>>>` [NOTE] ==== A common convention in this library is to assign the same name for a type and an object of this type. Besides defining them user never works with the dimension types in the source code. All operations are done on the objects. Contrarily, the dimension types are the only one visible in the compilation errors. Having them of the same names improves user experience and somehow blurs those separate domains. ==== [NOTE] ==== User should not instantiate this type! It is not exported from the C++ module. The library will instantiate this type automatically based on the dimensional arithmetic equation provided by the user. ==== == Base Classes [cols="1,4"] |=== |Name|Description | `/* implementation-defined */` | | `/* implementation-defined */` | |=== == Template Parameters [cols="1,4"] |=== |Name|Description | *Ds* | a parameter pack consisting tokens allowed in the dimension specification (base dimensions, `dimension_one`, `power<Dim, Num, Den>`, `per<...>`) |=== A specification of a derived quantity == Synopsis Declared in `<mp‐units/framework/quantity_spec.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template</* implementation-defined */... Expr> struct derived_quantity_spec final : /* implementation-defined */ ---- == Description Derived quantity is a quantity, in a system of quantities, defined in terms of other quantities of that system. Its dimension is an expression of the dependence of a quantity on the base quantities of a system of quantities as a product of powers of factors corresponding to the base quantities, omitting any numerical factors. Instead of using a raw list of exponents this library decided to use symbolic expression syntax to make types more digestable for the user both for quantity specification and its dimension. The positive exponents are ordered first and all negative exponents are put as a list into the `per<...>` class template. If a power of exponent is different than `1` the quantity type is enclosed in `power<Q, Num, Den>` class template. Otherwise, it is just put directly in the list without any wrapper. In case all of the exponents are negative than the `dimensionless`/`dimension_one` is put in the front to increase the readability. The character of those quantities is derived from ingredients or overriden with a template parameter. For example: [,cpp] ---- {.cpp} auto frequency = inverse(period_duration); auto area = pow<2>(length); auto speed = distance / duration; auto velocity = displacement / duration; auto acceleration = velocity / duration; ---- * the type of `frequency` is `derived_quantity_spec<dimensionless, per<period_duration>>` * the dimension type of `frequency` is `derived_dimension<dimension_one, per<dim_time>>` * the type of `area` is `derived_quantity_spec<power<length, 2>>` * the dimension type of `area` is `derived_dimension<power<dim_length, 2>>` * the type of `speed` is `derived_quantity_spec<distance, per<duration>>` * the dimension type of `speed` is `derived_dimension<dim_length, per<dim_time>>` * the type of `velocity` is `derived_quantity_spec<displacement, per<duration>>` * the dimension type of `velocity` is `derived_dimension<dim_length, per<dim_time>>` * the type of `acceleration` is `derived_quantity_spec<velocity, per<duration>>` * the dimension type of `acceleration` is `derived_dimension<dim_length, per<power<dim_time, 2>>>` [NOTE] ==== User should not instantiate this type! It is not exported from the C++ module. The library will instantiate this type automatically based on the dimensional arithmetic equation provided by the user. ==== == Base Classes [cols="1,4"] |=== |Name|Description | `/* implementation-defined */` | |=== == Template Parameters [cols="1,4"] |=== |Name|Description | *Expr* | a parameter pack consisting tokens allowed in the quantity specification (named quantity specification, `dimensionless`, `power<Q, Num, Den>`, `per<...>`) |=== Measurement unit for a derived quantity == Synopsis Declared in `<mp‐units/framework/unit.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template</* implementation-defined */... Expr> struct derived_unit final : /* implementation-defined */ ---- == Description Derived units are defined as products of powers of the base units. Instead of using a raw list of exponents this library decided to use expression template syntax to make types more digestable for the user. The positive exponents are ordered first and all negative exponents are put as a list into the `per<...>` class template. If a power of exponent is different than `1` the unit type is enclosed in `power<Dim, Num, Den>` class template. Otherwise, it is just put directly in the list without any wrapper. There is also one special case. In case all of the exponents are negative then the `one` being a coherent unit of a dimensionless quantity is put in the front to increase the readability. For example: [,cpp] ---- {.cpp} static_assert(is_of_type>>); static_assert(is_of_type); static_assert(is_of_type); static_assert(is_of_type>>); static_assert(is_of_type>); static_assert(is_of_type>>); static_assert(is_of_type>>>); static_assert(is_of_type>>); ---- Every unit in the library has its internal canonical representation being the list of exponents of named base units (with the exception of `kilogram` which is represented as `gram` here) and a scaling ratio represented with a magnitude. Two units are deemed convertible if their canonical version has units of the same type. Two units are equivalent when they are convertible and their canonical versions have the same scaling ratios. The above means that: * `1/s` and `Hz` are both convertible and equal * `m` and `km` are convertible but not equal * `m` and `m²` ane not convertible and not equal [NOTE] ==== This also means that units like `hertz` and `becquerel` are also considered convertible and equal. ==== [NOTE] ==== User should not instantiate this type! It is not exported from the C++ module. The library will instantiate this type automatically based on the unit arithmetic equation provided by the user. ==== == Base Classes [cols="1,4"] |=== |Name|Description | `/* implementation-defined */` | |=== == Template Parameters [cols="1,4"] |=== |Name|Description | *Us* | a parameter pack consisting tokens allowed in the unit specification (units, `power<U, Num, Den>`, `per<...>`) |=== Dimension one == Synopsis Declared in `<mp‐units/framework/dimension.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct dimension_one final : /* implementation-defined */ , /* implementation-defined */ ---- == Description Dimension for which all the exponents of the factors corresponding to the base dimensions are zero. It is a dimension of a quantity of dimension one also known as "dimensionless". == Base Classes [cols="1,4"] |=== |Name|Description | `/* implementation-defined */` | | `/* implementation-defined */` | |=== == Synopsis Declared in `<mp‐units/framework/dimension.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct dimension_symbol_formatting; ---- == Data Members [cols=1] |=== | Name | link:#mp_units-dimension_symbol_formatting-char_set[`char_set`] |=== == Synopsis Declared in `<mp‐units/framework/dimension.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-character_set[character_set] char_set = character_set::default_character_set; ---- Quantity of dimension one == Synopsis Declared in `<mp‐units/framework/quantity_spec.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct dimensionless final : link:#mp_units-quantity_spec-09[mp_units::quantity_spec<derived_quantity_spec<>{}>] ---- == Description Quantity of dimension one also commonly named as "dimensionless" is a quantity with a dimension for which all the exponents of the factors corresponding to the base dimensions are zero. == Base Classes [cols="1,4"] |=== |Name|Description | `link:#mp_units-quantity_spec-09[mp_units::quantity_spec<derived_quantity_spec<>{}>]` | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct discrete_distribution : std::discrete_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::discrete_distribution<Q::rep>` | A discrete_distribution random number distribution. |=== == Types [cols=1] |=== | Name | link:#mp_units-discrete_distribution-08-base[`base`] | link:#mp_units-discrete_distribution-08-rep[`rep`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-discrete_distribution-08-2constructor-08[`discrete_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-discrete_distribution-08-max[`max`] | | link:#mp_units-discrete_distribution-08-min[`min`] | | link:#mp_units-discrete_distribution-08-operator_call[`operator()`] | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using base = std::discrete_distribution<rep>; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using rep = Q::rep; ---- Constructors == Synopses Declared in `<mp‐units/random.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-discrete_distribution-08-2constructor-016[discrete_distribution](); ---- [.small]#link:#mp_units-discrete_distribution-08-2constructor-016[_» more..._]# Construct from `initializer_list` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-discrete_distribution-08-2constructor-0b[discrete_distribution](std::initializer_list<double> weights); ---- [.small]#link:#mp_units-discrete_distribution-08-2constructor-0b[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename InputIt> link:#mp_units-discrete_distribution-08-2constructor-018[discrete_distribution]( InputIt first, InputIt last); ---- [.small]#link:#mp_units-discrete_distribution-08-2constructor-018[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename UnaryOperation> link:#mp_units-discrete_distribution-08-2constructor-07[discrete_distribution]( std::size_t count, double xmin, double xmax, UnaryOperation unary_op); ---- [.small]#link:#mp_units-discrete_distribution-08-2constructor-07[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- discrete_distribution(); ---- Construct from `initializer_list` == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- discrete_distribution(std::initializer_list<double> weights); ---- == Parameters [cols="1,4"] |=== |Name|Description | *weights* | The object to construct from |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename InputIt> discrete_distribution( InputIt first, InputIt last); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename UnaryOperation> discrete_distribution( std::size_t count, double xmin, double xmax, UnaryOperation unary_op); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q max() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q min() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Generator> Q operator()(Generator& g); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::integral<typename Q::rep> struct discrete_distribution : std::discrete_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::discrete_distribution<Q::rep>` | A discrete_distribution random number distribution. |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct exponential_distribution : std::exponential_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::exponential_distribution<Q::rep>` | An exponential continuous distribution for random numbers. |=== == Types [cols=1] |=== | Name | link:#mp_units-exponential_distribution-0e-base[`base`] | link:#mp_units-exponential_distribution-0e-rep[`rep`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-exponential_distribution-0e-2constructor-0d[`exponential_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-exponential_distribution-0e-max[`max`] | | link:#mp_units-exponential_distribution-0e-min[`min`] | | link:#mp_units-exponential_distribution-0e-operator_call[`operator()`] | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using base = std::exponential_distribution<rep>; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using rep = Q::rep; ---- Constructors == Synopses Declared in `<mp‐units/random.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-exponential_distribution-0e-2constructor-02[exponential_distribution](); ---- [.small]#link:#mp_units-exponential_distribution-0e-2constructor-02[_» more..._]# Construct from `rep` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- explicit link:#mp_units-exponential_distribution-0e-2constructor-08[exponential_distribution](link:#mp_units-exponential_distribution-0e-rep[rep] const& lambda); ---- [.small]#link:#mp_units-exponential_distribution-0e-2constructor-08[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- exponential_distribution(); ---- Construct from `rep` == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- explicit exponential_distribution(link:#mp_units-exponential_distribution-0e-rep[rep] const& lambda); ---- == Parameters [cols="1,4"] |=== |Name|Description | *lambda* | The object to copy construct from |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q max() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q min() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Generator> Q operator()(Generator& g); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::floating_point<typename Q::rep> struct exponential_distribution : std::exponential_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::exponential_distribution<Q::rep>` | An exponential continuous distribution for random numbers. |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct extreme_value_distribution : std::extreme_value_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::extreme_value_distribution<Q::rep>` | A extreme_value_distribution random number distribution. |=== == Types [cols=1] |=== | Name | link:#mp_units-extreme_value_distribution-0e-base[`base`] | link:#mp_units-extreme_value_distribution-0e-rep[`rep`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-extreme_value_distribution-0e-2constructor-02[`extreme_value_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-extreme_value_distribution-0e-a[`a`] | | link:#mp_units-extreme_value_distribution-0e-max[`max`] | | link:#mp_units-extreme_value_distribution-0e-min[`min`] | | link:#mp_units-extreme_value_distribution-0e-operator_call[`operator()`] | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using base = std::extreme_value_distribution<rep>; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using rep = Q::rep; ---- Constructors == Synopses Declared in `<mp‐units/random.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-extreme_value_distribution-0e-2constructor-0c[extreme_value_distribution](); ---- [.small]#link:#mp_units-extreme_value_distribution-0e-2constructor-0c[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-extreme_value_distribution-0e-2constructor-05[extreme_value_distribution]( Q const& a, link:#mp_units-extreme_value_distribution-0e-rep[rep] const& b); ---- [.small]#link:#mp_units-extreme_value_distribution-0e-2constructor-05[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- extreme_value_distribution(); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- extreme_value_distribution( Q const& a, link:#mp_units-extreme_value_distribution-0e-rep[rep] const& b); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q a() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q max() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q min() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Generator> Q operator()(Generator& g); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::floating_point<typename Q::rep> struct extreme_value_distribution : std::extreme_value_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::extreme_value_distribution<Q::rep>` | A extreme_value_distribution random number distribution. |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct fisher_f_distribution : std::fisher_f_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::fisher_f_distribution<Q::rep>` | A fisher_f_distribution random number distribution. |=== == Types [cols=1] |=== | Name | link:#mp_units-fisher_f_distribution-02-base[`base`] | link:#mp_units-fisher_f_distribution-02-rep[`rep`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-fisher_f_distribution-02-2constructor-01[`fisher_f_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-fisher_f_distribution-02-max[`max`] | | link:#mp_units-fisher_f_distribution-02-min[`min`] | | link:#mp_units-fisher_f_distribution-02-operator_call[`operator()`] | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using base = std::fisher_f_distribution<rep>; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using rep = Q::rep; ---- Constructors == Synopses Declared in `<mp‐units/random.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-fisher_f_distribution-02-2constructor-05[fisher_f_distribution](); ---- [.small]#link:#mp_units-fisher_f_distribution-02-2constructor-05[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-fisher_f_distribution-02-2constructor-09[fisher_f_distribution]( link:#mp_units-fisher_f_distribution-02-rep[rep] const& m, link:#mp_units-fisher_f_distribution-02-rep[rep] const& n); ---- [.small]#link:#mp_units-fisher_f_distribution-02-2constructor-09[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- fisher_f_distribution(); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- fisher_f_distribution( link:#mp_units-fisher_f_distribution-02-rep[rep] const& m, link:#mp_units-fisher_f_distribution-02-rep[rep] const& n); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q max() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q min() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Generator> Q operator()(Generator& g); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::floating_point<typename Q::rep> struct fisher_f_distribution : std::fisher_f_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::fisher_f_distribution<Q::rep>` | A fisher_f_distribution random number distribution. |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct gamma_distribution : std::gamma_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::gamma_distribution<Q::rep>` | A gamma continuous distribution for random numbers. |=== == Types [cols=1] |=== | Name | link:#mp_units-gamma_distribution-0a4-base[`base`] | link:#mp_units-gamma_distribution-0a4-rep[`rep`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-gamma_distribution-0a4-2constructor-0f[`gamma_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-gamma_distribution-0a4-max[`max`] | | link:#mp_units-gamma_distribution-0a4-min[`min`] | | link:#mp_units-gamma_distribution-0a4-operator_call[`operator()`] | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using base = std::gamma_distribution<rep>; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using rep = Q::rep; ---- Constructors == Synopses Declared in `<mp‐units/random.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-gamma_distribution-0a4-2constructor-09[gamma_distribution](); ---- [.small]#link:#mp_units-gamma_distribution-0a4-2constructor-09[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-gamma_distribution-0a4-2constructor-0b[gamma_distribution]( link:#mp_units-gamma_distribution-0a4-rep[rep] const& alpha, link:#mp_units-gamma_distribution-0a4-rep[rep] const& beta); ---- [.small]#link:#mp_units-gamma_distribution-0a4-2constructor-0b[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- gamma_distribution(); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- gamma_distribution( link:#mp_units-gamma_distribution-0a4-rep[rep] const& alpha, link:#mp_units-gamma_distribution-0a4-rep[rep] const& beta); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q max() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q min() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Generator> Q operator()(Generator& g); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::floating_point<typename Q::rep> struct gamma_distribution : std::gamma_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::gamma_distribution<Q::rep>` | A gamma continuous distribution for random numbers. |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct geometric_distribution : std::geometric_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::geometric_distribution<Q::rep>` | A discrete geometric random number distribution. |=== == Types [cols=1] |=== | Name | link:#mp_units-geometric_distribution-08-base[`base`] | link:#mp_units-geometric_distribution-08-rep[`rep`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-geometric_distribution-08-2constructor-0b[`geometric_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-geometric_distribution-08-max[`max`] | | link:#mp_units-geometric_distribution-08-min[`min`] | | link:#mp_units-geometric_distribution-08-operator_call[`operator()`] | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using base = std::geometric_distribution<rep>; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using rep = Q::rep; ---- Constructors == Synopses Declared in `<mp‐units/random.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-geometric_distribution-08-2constructor-02[geometric_distribution](); ---- [.small]#link:#mp_units-geometric_distribution-08-2constructor-02[_» more..._]# Construct from `double` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- explicit link:#mp_units-geometric_distribution-08-2constructor-0e[geometric_distribution](double p); ---- [.small]#link:#mp_units-geometric_distribution-08-2constructor-0e[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- geometric_distribution(); ---- Construct from `double` == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- explicit geometric_distribution(double p); ---- == Parameters [cols="1,4"] |=== |Name|Description | *p* | The value to construct from |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q max() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q min() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Generator> Q operator()(Generator& g); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::integral<typename Q::rep> struct geometric_distribution : std::geometric_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::geometric_distribution<Q::rep>` | A discrete geometric random number distribution. |=== == Synopsis Declared in `<mp‐units/framework/quantity_spec.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct is_kind; ---- == Synopsis Declared in `<mp‐units/framework/quantity_spec_concepts.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Q> struct kind_of_; ---- == Synopsis Declared in `<mp‐units/framework/quantity_spec.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-QuantitySpec[QuantitySpec] Q> requires (!detail::QuantityKindSpec<Q>) && (detail::get_kind_tree_root(Q{}) == Q{}) struct link:#mp_units-kind_of_-00[kind_of_]<Q> final : Q::_base_type_ ---- == Base Classes [cols="1,4"] |=== |Name|Description | `Q::_base_type_` | |=== == Types [cols=1] |=== | Name | link:#mp_units-kind_of_-0d-_base_type_[`_base_type_`] |=== == Static Data Members [cols=1] |=== | Name | link:#mp_units-kind_of_-0d-_is_non_negative_[`_is_non_negative_`] | link:#mp_units-kind_of_-0d-_quantity_spec_[`_quantity_spec_`] |=== == Synopsis Declared in `<mp‐units/framework/quantity_spec.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using _base_type_ = link:#mp_units-kind_of_-0d[kind_of_]; ---- == Synopsis Declared in `<mp‐units/framework/quantity_spec.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static bool _is_non_negative_ = false; ---- == Synopsis Declared in `<mp‐units/framework/quantity_spec.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static auto _quantity_spec_ = Q{}; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct lognormal_distribution : std::lognormal_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::lognormal_distribution<Q::rep>` | A lognormal_distribution random number distribution. |=== == Types [cols=1] |=== | Name | link:#mp_units-lognormal_distribution-0e-base[`base`] | link:#mp_units-lognormal_distribution-0e-rep[`rep`] |=== == Member Functions [cols="1,4"] |=== | Name| Description | link:#mp_units-lognormal_distribution-0e-2constructor-0a[`lognormal_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-lognormal_distribution-0e-m[`m`] | | link:#mp_units-lognormal_distribution-0e-max[`max`] | | link:#mp_units-lognormal_distribution-0e-min[`min`] | | link:#mp_units-lognormal_distribution-0e-operator_call[`operator()`] | | link:#mp_units-lognormal_distribution-0e-s[`s`] | |=== == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using base = std::lognormal_distribution<rep>; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using rep = Q::rep; ---- Constructors == Synopses Declared in `<mp‐units/random.h>` Default constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-lognormal_distribution-0e-2constructor-04[lognormal_distribution](); ---- [.small]#link:#mp_units-lognormal_distribution-0e-2constructor-04[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-lognormal_distribution-0e-2constructor-0b[lognormal_distribution]( Q const& m, Q const& s); ---- [.small]#link:#mp_units-lognormal_distribution-0e-2constructor-0b[_» more..._]# Default constructor == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- lognormal_distribution(); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- lognormal_distribution( Q const& m, Q const& s); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q m() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q max() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q min() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename Generator> Q operator()(Generator& g); ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] Q s() const; ---- == Synopsis Declared in `<mp‐units/random.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::floating_point<typename Q::rep> struct lognormal_distribution : std::lognormal_distribution<Q::rep> ---- == Base Classes [cols="1,4"] |=== |Name|Description | `std::lognormal_distribution<Q::rep>` | A lognormal_distribution random number distribution. |=== == Synopsis Declared in `<mp‐units/framework/unit_magnitude.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< link:#mp_units-symbol_text-032[symbol_text] Symbol, long double Value> requires (Value > 0) struct mag_constant; ---- == Static Data Members [cols=1] |=== | Name | link:#mp_units-mag_constant-_symbol_[`_symbol_`] | link:#mp_units-mag_constant-_value_[`_value_`] |=== == Derived Classes [cols="1,4"] |=== |Name|Description | link:#mp_units-pi_c-0b[`pi_c`] | |=== == Synopsis Declared in `<mp‐units/framework/unit_magnitude.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static auto _symbol_ = Symbol; ---- == Synopsis Declared in `<mp‐units/framework/unit_magnitude.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static long double _value_ = Value; ---- Named constant definition == Synopsis Declared in `<mp‐units/framework/unit.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< link:#mp_units-symbol_text-032[symbol_text] Symbol, link:#mp_units-Unit[Unit] auto U> requires (!Symbol.empty()) struct named_constant : ::_base_type_ ---- == Description It is very similar to `named_unit` but: * allows negative exponents in the unit definition (TODO ) * does not allow the constant to be associated with a `quantity_spec` * does not allow the constant to be prefixed == Base Classes [cols="1,4"] |=== |Name|Description | `::_base_type_` | |=== == Types [cols=1] |=== | Name | link:#mp_units-named_constant-_base_type_[`_base_type_`] |=== == Static Data Members [cols="1,4"] |=== | Name| Description | link:#mp_units-named_constant-_symbol_[`_symbol_`] | Unique constant identifier |=== == Derived Classes [cols="1,4"] |=== |Name|Description | link:#mp_units-pi-0c[`pi`] | |=== == Template Parameters [cols="1,4"] |=== |Name|Description | *Symbol* | a short text representation of the constant | *Unit* | a unit that we use to define a constant |=== == Synopsis Declared in `<mp‐units/framework/unit.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- using _base_type_ = link:#mp_units-named_constant[named_constant]; ---- Unique constant identifier == Synopsis Declared in `<mp‐units/framework/unit.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- inline constexpr static auto _symbol_ = Symbol; ---- A named unit == Synopsis Declared in `<mp‐units/framework/unit.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< link:#mp_units-symbol_text-032[symbol_text] Symbol, auto...> struct named_unit; ---- == Description Defines a unit with a special name. It may be used to provide a base unit in the system of units (e.g. `metre`) or a name assigned to another scaled or derived unit (e.g. `hour`, `joule`). Most of the named units may be composed with a prefix to create a `prefixed_unit`. For example: [,cpp] ---- {.cpp} inline constexpr struct second final : named_unit<"s", kind_of