template<typename T>
concept MagConstant = SymbolicConstant<T> && is-derived-from-specialization-of<T, mag_constant>();
template<typename T>
concept UnitMagnitude = (is-specialization-of<T, unit-magnitude>());
template<typename T>
concept MagArg = std::integral<T> || MagConstant<T>; // exposition only
template<UnitMagnitude M>
friend consteval UnitMagnitude auto operator*(unit-magnitude lhs, M rhs);
friend consteval auto operator/(unit-magnitude lhs, UnitMagnitude auto rhs);
template<UnitMagnitude Rhs>
friend consteval bool operator==(unit-magnitude, Rhs);
template<int Num, int Den = 1>
friend consteval auto pow(unit-magnitude base); // exposition only
template<MagArg auto V>
constexpr UnitMagnitude auto mag = see below;
template<std::intmax_t N, std::intmax_t D>
requires(N > 0)
constexpr UnitMagnitude auto mag_ratio = see below;
template<MagArg auto Base, int Num, int Den = 1>
constexpr UnitMagnitude auto mag_power = pow<Num, Den>(mag<Base>);
friend consteval bool is-positive-integral-power(unit-magnitude x); // exposition only
template<auto... Ms2>
friend consteval auto common-magnitude(unit-magnitude, unit-magnitude<Ms2...>); // exposition only