System-specific reference
<mp-units/framework/system_reference.h>
template<
QuantitySpec auto Q,
Unit auto CoU>
requires (!MP_UNITS_ASSOCIATED_UNIT_T(decltype(CoU))) || (CoU == one)
struct system_reference;
| Name | Description |
|---|---|
operator[] | Subscript operator |
| Name |
|---|
coherent_unit |
quantity_spec |
This type is used in rare cases where more than one base quantity in a specific system of units uses the same unit. For example in a hypothetical system of natural units where constant for speed of light c = 1, length and time could be measured in seconds. In such cases system_reference has to be used to explicitly express such a binding.
For example:
{.cpp}
// hypothetical natural system of units for c=1
inline constexpr struct second final : named_unit<"s"> {} second;
inline constexpr struct minute final : named_unit<"min", mag<60> * second> {} minute;
inline constexpr struct gram final : named_unit<"g"> {} gram;
inline constexpr auto kilogram = si::kilo<gram>;
inline constexpr struct time : system_reference<isq::time, second> {} time;
inline constexpr struct length : system_reference<isq::length, second> {} length;
inline constexpr struct speed : system_reference<isq::speed, second / second> {} speed;
inline constexpr struct force : system_reference<isq::force, kilogram / second> {} force;
| Name | Description |
|---|---|
| Q | quantity for which a unit is being assigned |
| CoU | coherent unit for a quantity in this system |