= Reference :mrdocs: == Namespaces [cols=1] |=== | Name | link:#mp_units[`mp_units`] |=== == link:#mp_units[mp_units] namespace === Types [cols=2] |=== | 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[`binomial_distribution`] | | link:#mp_units-cartesian_vector-08[`cartesian_vector`] | | link:#mp_units-cauchy_distribution[`cauchy_distribution`] | | link:#mp_units-chi_squared_distribution[`chi_squared_distribution`] | | link:#mp_units-common_unit[`common_unit`] | Measurement unit for an accumulation of two quantities of different units | link:#mp_units-delta_[`delta_`] | | 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[`discrete_distribution`] | | link:#mp_units-exponential_distribution[`exponential_distribution`] | | link:#mp_units-extreme_value_distribution[`extreme_value_distribution`] | | link:#mp_units-fisher_f_distribution[`fisher_f_distribution`] | | link:#mp_units-gamma_distribution[`gamma_distribution`] | | link:#mp_units-geometric_distribution[`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[`lognormal_distribution`] | | link:#mp_units-mag_constant[`mag_constant`] | | link:#mp_units-named_unit-0ec[`named_unit`] | A named unit | link:#mp_units-named_unit-06[`named_unit<Symbol>`] | Specialization for a unit that can be reused by several base quantities | 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-negative_binomial_distribution[`negative_binomial_distribution`] | | link:#mp_units-normal_distribution[`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-piecewise_constant_distribution[`piecewise_constant_distribution`] | | link:#mp_units-piecewise_linear_distribution[`piecewise_linear_distribution`] | | link:#mp_units-point_[`point_`] | | link:#mp_units-poisson_distribution[`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-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-scaled_unit[`scaled_unit`] | Unit being a scaled version of another unit | link:#mp_units-student_t_distribution[`student_t_distribution`] | | link:#mp_units-symbol_text-032[`symbol_text`] | A symbol text representation | link:#mp_units-system_reference[`system_reference`] | System‐specific reference | link:#mp_units-uniform_int_distribution[`uniform_int_distribution`] | | link:#mp_units-uniform_real_distribution[`uniform_real_distribution`] | | link:#mp_units-unit_symbol_formatting[`unit_symbol_formatting`] | | link:#mp_units-weibull_distribution[`weibull_distribution`] | | link:#mp_units-zeroth_point_origin_[`zeroth_point_origin_`] | | 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-text_encoding[`text_encoding`] | | link:#mp_units-value_type_t[`value_type_t`] | | link:#mp_units-wrapped_type_t[`wrapped_type_t`] | |=== === Enums [cols=2] |=== | 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=2] |=== | Name | Description | link:#mp_units-abs[`abs`] | Computes the absolute value of a quantity | link:#mp_units-castable[`castable`] | | link:#mp_units-cbrt-07[`cbrt`] | `cbrt` overloads | 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-cubic[`cubic`] | Computes the cubic power of a unit | link:#mp_units-default_point_origin[`default_point_origin`] | | 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-021[`get_quantity_spec`] | | link:#mp_units-get_unit-02[`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_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-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-0c[`magnitude`] | | link:#mp_units-midpoint[`midpoint`] | Computes the midpoint of two points | link:#mp_units-operator_mod-01[`operator%`] | Modulus operators | link:#mp_units-operator_star-000[`operator*`] | Multiplication operators | link:#mp_units-operator_plus-0ad[`operator+`] | Addition operators | link:#mp_units-operator_minus-0c[`operator‐`] | Subtraction operators | link:#mp_units-operator_slash-0a[`operator/`] | Division operators | link:#mp_units-pow-00[`pow`] | `pow` overloads | 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-sqrt-0c[`sqrt`] | `sqrt` overloads | link:#mp_units-square[`square`] | Computes the square power of a unit | 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-0e9[`operator<<`] | Stream insertion operators | link:#mp_units-operator_eq-0cb[`operator==`] | Equality operators | link:#mp_units-operator_3way-06[`operator<=>`] | Three‐way comparison operators |=== === Variables [cols=2] |=== | Name | Description | link:#mp_units-absolute[`absolute`] | | link:#mp_units-delta[`delta`] | | 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-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 preserves the value | 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[`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-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-point[`point`] | | link:#mp_units-ppm[`ppm`] | | link:#mp_units-real[`real`] | | 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-zeroth_point_origin[`zeroth_point_origin`] | | link:#mp_units-π[`π`] | |=== === Concepts [cols=2] |=== | Name | Description | link:#mp_units-AssociatedUnit[`AssociatedUnit`] | A concept matching all units that can be used as quantity references | 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-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-0a[`basic_fixed_string<CharT, N>`] | link:#mp_units-cartesian_vector-06[`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-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-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=2] |=== | 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[`binomial_distribution`] | | link:#mp_units-cartesian_vector-08[`cartesian_vector`] | | link:#mp_units-cauchy_distribution[`cauchy_distribution`] | | link:#mp_units-chi_squared_distribution[`chi_squared_distribution`] | | link:#mp_units-common_unit[`common_unit`] | Measurement unit for an accumulation of two quantities of different units | link:#mp_units-delta_[`delta_`] | | 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[`discrete_distribution`] | | link:#mp_units-exponential_distribution[`exponential_distribution`] | | link:#mp_units-extreme_value_distribution[`extreme_value_distribution`] | | link:#mp_units-fisher_f_distribution[`fisher_f_distribution`] | | link:#mp_units-gamma_distribution[`gamma_distribution`] | | link:#mp_units-geometric_distribution[`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[`lognormal_distribution`] | | link:#mp_units-mag_constant[`mag_constant`] | | link:#mp_units-named_unit-0ec[`named_unit`] | A named unit | link:#mp_units-named_unit-06[`named_unit<Symbol>`] | Specialization for a unit that can be reused by several base quantities | 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-negative_binomial_distribution[`negative_binomial_distribution`] | | link:#mp_units-normal_distribution[`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-piecewise_constant_distribution[`piecewise_constant_distribution`] | | link:#mp_units-piecewise_linear_distribution[`piecewise_linear_distribution`] | | link:#mp_units-point_[`point_`] | | link:#mp_units-poisson_distribution[`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-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-scaled_unit[`scaled_unit`] | Unit being a scaled version of another unit | link:#mp_units-student_t_distribution[`student_t_distribution`] | | link:#mp_units-symbol_text-032[`symbol_text`] | A symbol text representation | link:#mp_units-system_reference[`system_reference`] | System‐specific reference | link:#mp_units-uniform_int_distribution[`uniform_int_distribution`] | | link:#mp_units-uniform_real_distribution[`uniform_real_distribution`] | | link:#mp_units-unit_symbol_formatting[`unit_symbol_formatting`] | | link:#mp_units-weibull_distribution[`weibull_distribution`] | | link:#mp_units-zeroth_point_origin_[`zeroth_point_origin_`] | | 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-text_encoding[`text_encoding`] | | link:#mp_units-value_type_t[`value_type_t`] | | link:#mp_units-wrapped_type_t[`wrapped_type_t`] | |=== == Enums [cols=2] |=== | 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=2] |=== | Name | Description | link:#mp_units-abs[`abs`] | Computes the absolute value of a quantity | link:#mp_units-castable[`castable`] | | link:#mp_units-cbrt-07[`cbrt`] | `cbrt` overloads | 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-cubic[`cubic`] | Computes the cubic power of a unit | link:#mp_units-default_point_origin[`default_point_origin`] | | 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-021[`get_quantity_spec`] | | link:#mp_units-get_unit-02[`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_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-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-0c[`magnitude`] | | link:#mp_units-midpoint[`midpoint`] | Computes the midpoint of two points | link:#mp_units-operator_mod-01[`operator%`] | Modulus operators | link:#mp_units-operator_star-000[`operator*`] | Multiplication operators | link:#mp_units-operator_plus-0ad[`operator+`] | Addition operators | link:#mp_units-operator_minus-0c[`operator‐`] | Subtraction operators | link:#mp_units-operator_slash-0a[`operator/`] | Division operators | link:#mp_units-pow-00[`pow`] | `pow` overloads | 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-sqrt-0c[`sqrt`] | `sqrt` overloads | link:#mp_units-square[`square`] | Computes the square power of a unit | 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-0e9[`operator<<`] | Stream insertion operators | link:#mp_units-operator_eq-0cb[`operator==`] | Equality operators | link:#mp_units-operator_3way-06[`operator<=>`] | Three‐way comparison operators |=== == Variables [cols=2] |=== | Name | Description | link:#mp_units-absolute[`absolute`] | | link:#mp_units-delta[`delta`] | | 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-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 preserves the value | 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[`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-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-point[`point`] | | link:#mp_units-ppm[`ppm`] | | link:#mp_units-real[`real`] | | 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-zeroth_point_origin[`zeroth_point_origin`] | | link:#mp_units-π[`π`] | |=== == Concepts [cols=2] |=== | Name | Description | link:#mp_units-AssociatedUnit[`AssociatedUnit`] | A concept matching all units that can be used as quantity references | 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-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-0a[`basic_fixed_string<CharT, N>`] | link:#mp_units-cartesian_vector-06[`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-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-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/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> struct absolute_point_origin : /* implementation-defined */ ---- == Base Classes [cols=2] |=== | Name | Description | `/* implementation-defined */` | |=== == Static Data Members [cols=1] |=== | Name | link:#mp_units-absolute_point_origin-_quantity_spec_[`_quantity_spec_`] |=== == Derived Classes [cols=2] |=== | Name | Description | link:#mp_units-zeroth_point_origin_[`zeroth_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 */ ---- == Base Classes [cols=2] |=== | Name | Description | `/* implementation-defined */` | |=== == Static Data Members [cols=2] |=== | Name | Description | link:#mp_units-base_dimension-_symbol_[`_symbol_`] | Unique base dimension identifier |=== == 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. == Template Parameters [cols=2] |=== | 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=2] |=== | Name | Description | link:#mp_units-basic_fixed_string-08-2constructor-012[`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=2] |=== | Name | Description | `link:#mp_units-operator_lshift-0e6[mp_units::operator<<]` | Stream insertion operator | `link:#mp_units-operator_3way-05[mp_units::operator<=>]` | Three‐way comparison operator | `link:#mp_units-operator_3way-0d[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-06[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=2] |=== | 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)[]) noexcept; ---- [.small]#link:#mp_units-basic_fixed_string-08-2constructor-0f[_» more..._]# Construct from `Chars` [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-030[basic_fixed_string](Chars... chars) noexcept; ---- [.small]#link:#mp_units-basic_fixed_string-08-2constructor-030[_» 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-015[basic_fixed_string]( std::from_range_t, R&& r); ---- [.small]#link:#mp_units-basic_fixed_string-08-2constructor-015[_» 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-03a[basic_fixed_string]( It begin, S end); ---- [.small]#link:#mp_units-basic_fixed_string-08-2constructor-03a[_» 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=2] |=== | 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)[]) noexcept; ---- == Parameters [cols=2] |=== | Name | Description | *txt* | The object to copy construct from |=== Construct from `Chars` == 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=2] |=== | 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); ---- == 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=2] |=== | 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 The object converted to `basic_string_view` == Synopsis Declared in `<mp‐units/ext/fixed_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- CharT data_[] = {}; ---- == 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"] ---- template<link:#mp_units-Quantity[Quantity] Q> requires std::integral<typename Q::rep> struct binomial_distribution : std::binomial_distribution<Q::rep> ---- == Base Classes [cols=2] |=== | Name | Description | `std::binomial_distribution<Q::rep>` | |=== == Types [cols=1] |=== | Name | link:#mp_units-binomial_distribution-base[`base`] | link:#mp_units-binomial_distribution-rep[`rep`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-binomial_distribution-2constructor-08[`binomial_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-binomial_distribution-max[`max`] | | link:#mp_units-binomial_distribution-min[`min`] | | link:#mp_units-binomial_distribution-operator_call[`operator()`] | | link:#mp_units-binomial_distribution-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-2constructor-0b[binomial_distribution](); ---- [.small]#link:#mp_units-binomial_distribution-2constructor-0b[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-binomial_distribution-2constructor-0c[binomial_distribution]( Q const& t, double p); ---- [.small]#link:#mp_units-binomial_distribution-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/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template</* implementation-defined */ T = double> class cartesian_vector : public /* implementation-defined */ ---- == Base Classes [cols=2] |=== | Name | Description | `/* implementation-defined */` | |=== == Types [cols=1] |=== | Name | link:#mp_units-cartesian_vector-08-value_type[`value_type`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-cartesian_vector-08-2constructor-0b[`cartesian_vector`] [.small]#[constructor]# | Constructors | link:#mp_units-cartesian_vector-08-operator_assign-0b6[`operator=`] | Assignment operators | link:#mp_units-cartesian_vector-08-magnitude[`magnitude`] | | 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=2] |=== | Name | Description | `link:#mp_units-operator_lshift-0b[mp_units::operator<<]` | Stream insertion operator | `link:#mp_units-unit_vector[mp_units::unit_vector]` | | `link:#mp_units-magnitude-0c[mp_units::magnitude]` | |=== == 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>` Copy constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-cartesian_vector-08-2constructor-010[cartesian_vector](link:#mp_units-cartesian_vector-08[cartesian_vector] const& other) = default; ---- [.small]#link:#mp_units-cartesian_vector-08-2constructor-010[_» more..._]# Copy constructor [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>] const& other); ---- [.small]#link:#mp_units-cartesian_vector-08-2constructor-0c[_» more..._]# Move constructor [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-cartesian_vector-08-2constructor-0e[cartesian_vector](link:#mp_units-cartesian_vector-08[cartesian_vector]&& other) = default; ---- [.small]#link:#mp_units-cartesian_vector-08-2constructor-0e[_» more..._]# Move constructor [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-05[cartesian_vector](link:#mp_units-cartesian_vector-08[cartesian_vector<U>]&& other); ---- [.small]#link:#mp_units-cartesian_vector-08-2constructor-05[_» more..._]# Construct from `Args` [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-015[cartesian_vector](Args...&&... args); ---- [.small]#link:#mp_units-cartesian_vector-08-2constructor-015[_» more..._]# Copy constructor == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- cartesian_vector(link:#mp_units-cartesian_vector-08[cartesian_vector] const& other) = default; ---- == Parameters [cols=2] |=== | Name | Description | *other* | The object to copy construct from |=== Copy constructor == 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=2] |=== | Name | Description | *other* | The object to copy construct from |=== Move constructor == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- cartesian_vector(link:#mp_units-cartesian_vector-08[cartesian_vector]&& other) = default; ---- == Parameters [cols=2] |=== | Name | Description | *other* | The object to move construct from |=== Move constructor == 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=2] |=== | Name | Description | *other* | The object to move construct from |=== Construct from `Args` == 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=2] |=== | Name | Description | *args* | The object to move construct from |=== Assignment operators == Synopses Declared in `<mp‐units/cartesian_vector.h>` Copy assignment operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-cartesian_vector-08[cartesian_vector]& link:#mp_units-cartesian_vector-08-operator_assign-05[operator=](link:#mp_units-cartesian_vector-08[cartesian_vector] const& other) = default; ---- [.small]#link:#mp_units-cartesian_vector-08-operator_assign-05[_» more..._]# Copy 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..._]# Move assignment operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-cartesian_vector-08[cartesian_vector]& link:#mp_units-cartesian_vector-08-operator_assign-0b3[operator=](link:#mp_units-cartesian_vector-08[cartesian_vector]&& other) = default; ---- [.small]#link:#mp_units-cartesian_vector-08-operator_assign-0b3[_» more..._]# Move 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..._]# Copy assignment operator == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-cartesian_vector-08[cartesian_vector]& operator=(link:#mp_units-cartesian_vector-08[cartesian_vector] const& other) = default; ---- == Return Value Reference to the current object == Parameters [cols=2] |=== | Name | Description | *other* | The object to copy assign from |=== Copy 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=2] |=== | Name | Description | *other* | The object to copy assign from |=== Move assignment operator == Synopsis Declared in `<mp‐units/cartesian_vector.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-cartesian_vector-08[cartesian_vector]& operator=(link:#mp_units-cartesian_vector-08[cartesian_vector]&& other) = default; ---- == Return Value Reference to the current object == Parameters [cols=2] |=== | Name | Description | *other* | The object to move assign from |=== Move 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=2] |=== | 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 T magnitude() const requires treat_as_floating_point<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=2] |=== | 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=2] |=== | 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=2] |=== | 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=2] |=== | 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"] ---- 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=2] |=== | Name | Description | `std::cauchy_distribution<Q::rep>` | |=== == Types [cols=1] |=== | Name | link:#mp_units-cauchy_distribution-base[`base`] | link:#mp_units-cauchy_distribution-rep[`rep`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-cauchy_distribution-2constructor-08[`cauchy_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-cauchy_distribution-a[`a`] | | link:#mp_units-cauchy_distribution-b[`b`] | | link:#mp_units-cauchy_distribution-max[`max`] | | link:#mp_units-cauchy_distribution-min[`min`] | | link:#mp_units-cauchy_distribution-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-2constructor-0a[cauchy_distribution](); ---- [.small]#link:#mp_units-cauchy_distribution-2constructor-0a[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-cauchy_distribution-2constructor-00[cauchy_distribution]( Q const& a, Q const& b); ---- [.small]#link:#mp_units-cauchy_distribution-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 chi_squared_distribution : std::chi_squared_distribution<Q::rep> ---- == Base Classes [cols=2] |=== | Name | Description | `std::chi_squared_distribution<Q::rep>` | |=== == Types [cols=1] |=== | Name | link:#mp_units-chi_squared_distribution-base[`base`] | link:#mp_units-chi_squared_distribution-rep[`rep`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-chi_squared_distribution-2constructor-0b[`chi_squared_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-chi_squared_distribution-max[`max`] | | link:#mp_units-chi_squared_distribution-min[`min`] | | link:#mp_units-chi_squared_distribution-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-2constructor-03[chi_squared_distribution](); ---- [.small]#link:#mp_units-chi_squared_distribution-2constructor-03[_» more..._]# Construct from `rep` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- explicit link:#mp_units-chi_squared_distribution-2constructor-06[chi_squared_distribution](link:#mp_units-chi_squared_distribution-rep[rep] const& n); ---- [.small]#link:#mp_units-chi_squared_distribution-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-rep[rep] const& n); ---- == Parameters [cols=2] |=== | 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); ---- 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_ ---- == Base Classes [cols=2] |=== | 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_`] |=== == 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. == 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::get_common_scaled_unit(U1{}, U2{}, Rest{}...); ---- == Synopsis Declared in `<mp‐units/framework/construction_helpers.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<link:#mp_units-Reference[Reference] R> struct delta_; ---- == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-delta_-operator_call[`operator()`] | Function call operator |=== Function call operator == Synopsis Declared in `<mp‐units/framework/construction_helpers.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< typename FwdRep, link:#mp_units-RepresentationOf[RepresentationOf<get_quantity_spec(R{})>] Rep = std::remove_cvref_t<FwdRep>> [[nodiscard]] constexpr link:#mp_units-quantity-01[quantity<R{}, Rep>] operator()(FwdRep&& lhs) const; ---- == Return Value A quantity == Parameters [cols=2] |=== | Name | Description | *lhs* | The right operand |=== 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 */ ---- == Base Classes [cols=2] |=== | Name | Description | `/* 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. == Template Parameters [cols=2] |=== | 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 */ ---- == Base Classes [cols=2] |=== | Name | Description | `/* 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. == Template Parameters [cols=2] |=== | 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 */ ---- == Base Classes [cols=2] |=== | Name | Description | `/* 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. == Template Parameters [cols=2] |=== | 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 */ ---- == Base Classes [cols=2] |=== | Name | Description | `/* 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". == 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<>{}>] ---- == Base Classes [cols=2] |=== | Name | Description | `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. == 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=2] |=== | Name | Description | `std::discrete_distribution<Q::rep>` | |=== == Types [cols=1] |=== | Name | link:#mp_units-discrete_distribution-base[`base`] | link:#mp_units-discrete_distribution-rep[`rep`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-discrete_distribution-2constructor-03[`discrete_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-discrete_distribution-max[`max`] | | link:#mp_units-discrete_distribution-min[`min`] | | link:#mp_units-discrete_distribution-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-2constructor-016[discrete_distribution](); ---- [.small]#link:#mp_units-discrete_distribution-2constructor-016[_» more..._]# Construct from `initializer_list` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-discrete_distribution-2constructor-0b[discrete_distribution](std::initializer_list<double> weights); ---- [.small]#link:#mp_units-discrete_distribution-2constructor-0b[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename InputIt> link:#mp_units-discrete_distribution-2constructor-018[discrete_distribution]( InputIt first, InputIt last); ---- [.small]#link:#mp_units-discrete_distribution-2constructor-018[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename UnaryOperation> link:#mp_units-discrete_distribution-2constructor-07[discrete_distribution]( std::size_t count, double xmin, double xmax, UnaryOperation unary_op); ---- [.small]#link:#mp_units-discrete_distribution-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=2] |=== | 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::floating_point<typename Q::rep> struct exponential_distribution : std::exponential_distribution<Q::rep> ---- == Base Classes [cols=2] |=== | Name | Description | `std::exponential_distribution<Q::rep>` | |=== == Types [cols=1] |=== | Name | link:#mp_units-exponential_distribution-base[`base`] | link:#mp_units-exponential_distribution-rep[`rep`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-exponential_distribution-2constructor-05[`exponential_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-exponential_distribution-max[`max`] | | link:#mp_units-exponential_distribution-min[`min`] | | link:#mp_units-exponential_distribution-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-2constructor-02[exponential_distribution](); ---- [.small]#link:#mp_units-exponential_distribution-2constructor-02[_» more..._]# Construct from `rep` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- explicit link:#mp_units-exponential_distribution-2constructor-08[exponential_distribution](link:#mp_units-exponential_distribution-rep[rep] const& lambda); ---- [.small]#link:#mp_units-exponential_distribution-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-rep[rep] const& lambda); ---- == Parameters [cols=2] |=== | 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 extreme_value_distribution : std::extreme_value_distribution<Q::rep> ---- == Base Classes [cols=2] |=== | Name | Description | `std::extreme_value_distribution<Q::rep>` | |=== == Types [cols=1] |=== | Name | link:#mp_units-extreme_value_distribution-base[`base`] | link:#mp_units-extreme_value_distribution-rep[`rep`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-extreme_value_distribution-2constructor-04[`extreme_value_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-extreme_value_distribution-a[`a`] | | link:#mp_units-extreme_value_distribution-max[`max`] | | link:#mp_units-extreme_value_distribution-min[`min`] | | link:#mp_units-extreme_value_distribution-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-2constructor-0c[extreme_value_distribution](); ---- [.small]#link:#mp_units-extreme_value_distribution-2constructor-0c[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-extreme_value_distribution-2constructor-05[extreme_value_distribution]( Q const& a, link:#mp_units-extreme_value_distribution-rep[rep] const& b); ---- [.small]#link:#mp_units-extreme_value_distribution-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-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 fisher_f_distribution : std::fisher_f_distribution<Q::rep> ---- == Base Classes [cols=2] |=== | Name | Description | `std::fisher_f_distribution<Q::rep>` | |=== == Types [cols=1] |=== | Name | link:#mp_units-fisher_f_distribution-base[`base`] | link:#mp_units-fisher_f_distribution-rep[`rep`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-fisher_f_distribution-2constructor-0d[`fisher_f_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-fisher_f_distribution-max[`max`] | | link:#mp_units-fisher_f_distribution-min[`min`] | | link:#mp_units-fisher_f_distribution-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-2constructor-05[fisher_f_distribution](); ---- [.small]#link:#mp_units-fisher_f_distribution-2constructor-05[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-fisher_f_distribution-2constructor-09[fisher_f_distribution]( link:#mp_units-fisher_f_distribution-rep[rep] const& m, link:#mp_units-fisher_f_distribution-rep[rep] const& n); ---- [.small]#link:#mp_units-fisher_f_distribution-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-rep[rep] const& m, link:#mp_units-fisher_f_distribution-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 gamma_distribution : std::gamma_distribution<Q::rep> ---- == Base Classes [cols=2] |=== | Name | Description | `std::gamma_distribution<Q::rep>` | |=== == Types [cols=1] |=== | Name | link:#mp_units-gamma_distribution-base[`base`] | link:#mp_units-gamma_distribution-rep[`rep`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-gamma_distribution-2constructor-06[`gamma_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-gamma_distribution-max[`max`] | | link:#mp_units-gamma_distribution-min[`min`] | | link:#mp_units-gamma_distribution-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-2constructor-09[gamma_distribution](); ---- [.small]#link:#mp_units-gamma_distribution-2constructor-09[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-gamma_distribution-2constructor-0b[gamma_distribution]( link:#mp_units-gamma_distribution-rep[rep] const& alpha, link:#mp_units-gamma_distribution-rep[rep] const& beta); ---- [.small]#link:#mp_units-gamma_distribution-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-rep[rep] const& alpha, link:#mp_units-gamma_distribution-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::integral<typename Q::rep> struct geometric_distribution : std::geometric_distribution<Q::rep> ---- == Base Classes [cols=2] |=== | Name | Description | `std::geometric_distribution<Q::rep>` | |=== == Types [cols=1] |=== | Name | link:#mp_units-geometric_distribution-base[`base`] | link:#mp_units-geometric_distribution-rep[`rep`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-geometric_distribution-2constructor-07[`geometric_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-geometric_distribution-max[`max`] | | link:#mp_units-geometric_distribution-min[`min`] | | link:#mp_units-geometric_distribution-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-2constructor-02[geometric_distribution](); ---- [.small]#link:#mp_units-geometric_distribution-2constructor-02[_» more..._]# Construct from `double` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- explicit link:#mp_units-geometric_distribution-2constructor-0e[geometric_distribution](double p); ---- [.small]#link:#mp_units-geometric_distribution-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=2] |=== | 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/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=2] |=== | 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-_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 auto _quantity_spec_ = Q{}; ---- == 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=2] |=== | Name | Description | `std::lognormal_distribution<Q::rep>` | |=== == Types [cols=1] |=== | Name | link:#mp_units-lognormal_distribution-base[`base`] | link:#mp_units-lognormal_distribution-rep[`rep`] |=== == Member Functions [cols=2] |=== | Name | Description | link:#mp_units-lognormal_distribution-2constructor-02[`lognormal_distribution`] [.small]#[constructor]# | Constructors | link:#mp_units-lognormal_distribution-m[`m`] | | link:#mp_units-lognormal_distribution-max[`max`] | | link:#mp_units-lognormal_distribution-min[`min`] | | link:#mp_units-lognormal_distribution-operator_call[`operator()`] | | link:#mp_units-lognormal_distribution-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-2constructor-04[lognormal_distribution](); ---- [.small]#link:#mp_units-lognormal_distribution-2constructor-04[_» more..._]# [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- link:#mp_units-lognormal_distribution-2constructor-0b[lognormal_distribution]( Q const& m, Q const& s); ---- [.small]#link:#mp_units-lognormal_distribution-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/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=2] |=== | Name | Description | link:#mp_units-pi-0c[`pi`] | |=== == 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; ---- 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; ---- == Derived Classes [cols=2] |=== | Name | Description | link:#mp_units-parts_per_million-0f[`parts_per_million`] | | link:#mp_units-per_mille-01[`per_mille`] | | link:#mp_units-percent-02[`percent`] | |=== == 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