diff --git a/HEAD/api_reference/gen/assoc.qty.html b/HEAD/api_reference/gen/assoc.qty.html index bd156f33..86c2080e 100644 --- a/HEAD/api_reference/gen/assoc.qty.html +++ b/HEAD/api_reference/gen/assoc.qty.html @@ -1,6 +1,6 @@
template<AssociatedUnit U>
consteval auto get-associated-quantity(U u); // exposition only
-
Subclause | Module | ||
Utilities | mp_units.core | ||
Reference | |||
Representation | |||
Quantity | |||
Quantity point | |||
Systems | mp_units.systems | ||
std::chrono interoperability |
consteval ratio(std::intmax_t n, std::intmax_t d = 1);
-
friend consteval ratio operator*(ratio lhs, ratio rhs);
-
friend consteval ratio operator*(ratio lhs, ratio rhs);
+
consteval ratio common-ratio(ratio r1, ratio r2);
-
constexpr symbol_text(char portable);
@@ -800,15 +800,15 @@ it is a Precondition that
constexpr symbol_text(const std::fixed_string<N>& portable);
consteval symbol_text(const char8_t (&utf8)[N + 1], const char (&portable)[M + 1]);
constexpr symbol_text(const std::fixed_u8string<N>& utf8, const std::fixed_string<M>& portable);
-
template<std::size_t N2, std::size_t M2>
friend constexpr symbol_text<N + N2, M + M2> operator+(const symbol_text& lhs,
const symbol_text<N2, M2>& rhs);
-
template<std::size_t N2, std::size_t M2>
@@ -817,10 +817,10 @@ let utf8 be:
template<std::size_t N2, std::size_t M2>
friend constexpr auto operator<=>(const symbol_text& lhs,
const symbol_text<N2, M2>& rhs) noexcept;
-
template<typename T, typename U>
consteval bool type-less-impl(); // exposition only
-
template<template<typename> typename Proj, template<typename...> typename To, typename OneType,
template<typename, typename> typename Pred = type-less, typename T>
consteval auto expr-map(T); // exposition only
-
template<typename T>
concept Dimension = SymbolicConstant<T> && std::derived_from<T, dimension-interface>;
@@ -961,7 +961,7 @@ for defining the dimension of a quantity (IEC 60050, 112-01-08).
template<typename T>
concept QuantitySpec = SymbolicConstant<T> && std::derived_from<T, quantity-spec-interface>;
@@ -1105,15 +1105,15 @@ for defining a quantity (IEC 60050, 112-01-02).
template<QuantitySpec auto... From, QuantitySpec Q>
+
template<QuantitySpec auto... From, QuantitySpec Q>
consteval QuantitySpec auto clone-kind-of(Q q); // exposition only
-
template<QuantitySpec Q>
consteval auto remove-kind(Q q); // exposition only
-
template<QuantitySpec QS, Unit U>
requires(!AssociatedUnit<U>) || UnitOf<U, QS{}>
consteval Reference auto make-reference(QS, U u); // exposition only
-
template<QuantitySpec Lhs, QuantitySpec Rhs>
friend consteval QuantitySpec auto operator*(Lhs lhs, Rhs rhs);
-
template<QuantitySpec Lhs, QuantitySpec Rhs>
friend consteval QuantitySpec auto operator/(Lhs lhs, Rhs rhs);
-
template<QuantitySpec Lhs, QuantitySpec Rhs>
friend consteval bool operator==(Lhs, Rhs);
-
consteval QuantitySpec auto inverse(QuantitySpec auto q);
-
template<std::intmax_t Num, std::intmax_t Den = 1, QuantitySpec Q>
+
consteval QuantitySpec auto inverse(QuantitySpec auto q);
+
template<std::intmax_t Num, std::intmax_t Den = 1, QuantitySpec Q>
requires(Den != 0)
consteval QuantitySpec auto pow(Q q);
-
consteval QuantitySpec auto sqrt(QuantitySpec auto q);
-
consteval QuantitySpec auto cbrt(QuantitySpec auto q);
-
consteval bool implicitly_convertible(QuantitySpec auto from, QuantitySpec auto to);
-
consteval bool explicitly_convertible(QuantitySpec auto from, QuantitySpec auto to);
-
consteval bool castable(QuantitySpec auto from, QuantitySpec auto to);
-
consteval bool interconvertible(QuantitySpec auto qs1, QuantitySpec auto qs2);
-
template<QuantitySpec Q>
+
consteval QuantitySpec auto cbrt(QuantitySpec auto q);
+
consteval bool implicitly_convertible(QuantitySpec auto from, QuantitySpec auto to);
+
consteval bool explicitly_convertible(QuantitySpec auto from, QuantitySpec auto to);
+
consteval bool castable(QuantitySpec auto from, QuantitySpec auto to);
+
consteval bool interconvertible(QuantitySpec auto qs1, QuantitySpec auto qs2);
+
template<QuantitySpec Q>
consteval QuantitySpec auto get-kind-tree-root(Q q); // exposition only
-
template<QuantitySpec Q>
consteval QuantityKindSpec auto get_kind(Q);
-
consteval QuantitySpec auto get_common_quantity_spec(QuantitySpec auto... qs)
+
consteval QuantitySpec auto get_common_quantity_spec(QuantitySpec auto... qs)
requires see below;
-
template<QuantitySpec auto A, QuantitySpec auto B>
consteval auto get-common-base(); // exposition only
-
template<QuantitySpec Child, QuantitySpec Parent>
consteval bool is-child-of(Child ch, Parent p); // exposition only
-
template<typename T>
concept MagConstant = SymbolicConstant<T> && is-derived-from-specialization-of<T, mag_constant>();
@@ -1371,8 +1371,8 @@ with support for powers (.
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
-
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
-
template<typename T>
@@ -1454,8 +1454,8 @@ and have type const };
}
-
template<UnitMagnitude M, Unit U>
friend consteval Unit auto operator*(M, U u);
-
friend consteval Unit auto operator*(Unit auto, UnitMagnitude auto) = delete;
-
consteval QuantitySpec auto get_quantity_spec(AssociatedUnit auto u);
-
consteval Unit auto get_unit(AssociatedUnit auto u);
-
consteval Unit auto get_unit(AssociatedUnit auto u);
+
template<AssociatedUnit U>
consteval auto get-associated-quantity(U u); // exposition only
-
template<typename T>
concept Reference = AssociatedUnit<T> || (is-specialization-of<T, reference>());
@@ -1852,29 +1852,29 @@ represents the reference of a quantity (IEC 60050, 112-01-01).
template<typename FwdRep, Reference R,
RepresentationOf<get_quantity_spec(R{})> Rep = std::remove_cvref_t<FwdRep>>
requires(!OffsetUnit<decltype(get_unit(R{}))>)
constexpr quantity<R{}, Rep> operator*(FwdRep&& lhs, R r);
-
template<typename FwdRep, Reference R,
RepresentationOf<get_quantity_spec(R{})> Rep = std::remove_cvref_t<FwdRep>>
requires(!OffsetUnit<decltype(get_unit(R{}))>)
constexpr Quantity auto operator/(FwdRep&& lhs, R);
-
template<Reference R, typename Rep>
requires RepresentationOf<std::remove_cvref_t<Rep>, get_quantity_spec(R{})>
@@ -1891,25 +1891,25 @@ returns {template<Reference R, typename Q>
requires Quantity<std::remove_cvref_t<Q>>
constexpr auto operator/(R, Q&&) = delete;
-
template<typename Q2, typename U2>
friend consteval bool operator==(reference, reference<Q2, U2>);
-
template<typename Q2, typename U2>
friend consteval bool convertible(reference, reference<Q2, U2>);
-
template<AssociatedUnit U2>
+
template<AssociatedUnit U2>
friend consteval bool convertible(reference, U2 u2);
-
template<AssociatedUnit U1>
+
template<AssociatedUnit U1>
friend consteval bool convertible(U1 u1, reference);
-
template<typename Q, typename U>
+
template<typename Q, typename U>
consteval QuantitySpec auto get_quantity_spec(reference<Q, U>);
-
template<typename Q, typename U>
+
consteval AssociatedUnit auto get_common_reference(AssociatedUnit auto u1,
+
consteval AssociatedUnit auto get_common_reference(AssociatedUnit auto u1,
AssociatedUnit auto u2,
AssociatedUnit auto... rest)
requires see below;
-
template<typename T>
struct actual-value-type : cond-value-type<T> {}; // see N4971, [readable.traits]
@@ -1942,8 +1942,8 @@ used to constrain the numerical value of a quantity (N4971, [namespace.std] ([spec.ext]),
+
template<typename T>
@@ -1952,12 +1952,12 @@ and have type const constexpr bool disable_complex = false;
template<typename T>
constexpr bool disable_vector = false;
-
static constexpr Rep one() noexcept;
-
template<typename T>
+
template<typename T>
using value-type-t = actual-value-type-t<T>; // exposition only, see [qty.fp.traits]
template<typename T>
@@ -2038,7 +2038,7 @@ then mp_units::mp_units::imag(a);
::mp_units::modulus(a);
};
-
template<typename T>
+
template<typename T>
+
template<typename T>
using scaling-factor-type-t = // exposition only
std::conditional_t<treat_as_floating_point<T>, long double, std::intmax_t>;
@@ -2064,7 +2064,7 @@ then mp_units{ f * a } -> std::common_with<T>;
{ a / f } -> std::common_with<T>;
};
-
template<typename T>
+
template<typename T>
+
template<typename T>
+
template<typename T>
concept Representation = ScalarRepresentation<T> || ComplexRepresentation<T> ||
VectorRepresentation<T>;
-
template<typename T, quantity_character Ch>
concept IsOfCharacter = (Ch == quantity_character::real_scalar && Scalar<T>) || // exposition only
(Ch == quantity_character::complex_scalar && Complex<T>) ||
@@ -2090,11 +2090,11 @@ it represents the numerical value of a quantity (IEC 60050, 112-01-28)
-that is an element of a vector space (IEC 60050, 102-03-01,102-03-04).
template<typename T, template<typename> typename Traits>
concept qty-like-impl = requires(const T& qty, const Traits<T>::rep& num) { // exposition only
@@ -2110,10 +2110,10 @@ to specify conversions with other types representing quantitiesconcept QuantityLike = !Quantity<T> && qty-like-impl<T, quantity_like_traits> && requires {
typename quantity<quantity_like_traits<T>::reference, typename quantity_like_traits<T>::rep>;
};
-
static constexpr quantity zero() noexcept
requires see below;
static constexpr quantity one() noexcept
@@ -2454,7 +2454,7 @@ if Rep is a structural typerequires see below;
static constexpr quantity max() noexcept
requires see below;
-
template<QuantityLike Q>
+
template<QuantityLike Q>
requires QuantityConvertibleTo<quantity-like-type<Q>, quantity>
constexpr explicit(see below) quantity(const Q& q);
-
template<UnitCompatibleWith<unit, quantity_spec> ToU>
requires QuantityConvertibleTo<quantity, quantity<make-reference(quantity_spec, ToU{}), Rep>>
constexpr QuantityOf<quantity_spec> auto in(ToU) const;
-
template<RepresentationOf<quantity_spec> ToRep>
requires QuantityConvertibleTo<quantity, quantity<reference, ToRep>>
constexpr QuantityOf<quantity_spec> auto in() const;
-
template<RepresentationOf<quantity_spec> ToRep,
UnitCompatibleWith<unit, quantity_spec> ToU>
requires QuantityConvertibleTo<quantity,
quantity<make-reference(quantity_spec, ToU{}), ToRep>>
constexpr QuantityOf<quantity_spec> auto in(ToU) const;
-
template<UnitCompatibleWith<unit, quantity_spec> ToU>
requires requires(const quantity q) { value_cast<ToU{}>(q); }
constexpr QuantityOf<quantity_spec> auto force_in(ToU) const;
-
template<RepresentationOf<quantity_spec> ToRep>
requires requires(const quantity q) { value_cast<ToRep>(q); }
constexpr QuantityOf<quantity_spec> auto force_in() const;
-
template<RepresentationOf<quantity_spec> ToRep,
UnitCompatibleWith<unit, quantity_spec> ToU>
requires requires(const quantity q) { value_cast<ToU{}, ToRep>(q); }
constexpr QuantityOf<quantity_spec> auto force_in(ToU) const;
-
template<typename V_, std::constructible_from<Rep> Value = std::remove_cvref_t<V_>>
requires(unit == ::mp_units::one)
explicit operator V_() const & noexcept;
-
template<typename Q_, QuantityLike Q = std::remove_cvref_t<Q_>>
+
template<typename Q_, QuantityLike Q = std::remove_cvref_t<Q_>>
requires QuantityConvertibleTo<quantity, quantity-like-type<Q>>
constexpr explicit(see below) operator Q_() const noexcept(see below);
-
constexpr QuantityOf<quantity_spec> auto operator+() const
requires see below;
constexpr QuantityOf<quantity_spec> auto operator-() const
requires see below;
-
template<Mutable<quantity> Q, auto R2, typename Rep2>
requires see below
friend constexpr decltype(auto) operator+=(Q&& lhs, const quantity<R2, Rep2>& rhs);
@@ -2580,23 +2580,23 @@ let @ be the operator
template<Mutable<quantity> Q, auto R2, typename Rep2>
requires see below
friend constexpr decltype(auto) operator%=(Q&& lhs, const quantity<R2, Rep2>& rhs);
-
template<Mutable<quantity> Q, ValuePreservingTo<Rep> Value>
requires see below
friend constexpr decltype(auto) operator*=(Q&& lhs, const Value& rhs);
template<Mutable<quantity> Q, ValuePreservingTo<Rep> Value>
requires see below
friend constexpr decltype(auto) operator/=(Q&& lhs, const Value& rhs);
-
template<std::derived_from<quantity> Q, auto R2, typename Rep2>
requires CommonlyInvocableQuantities<std::plus<>, quantity, quantity<R2, Rep2>>
friend constexpr Quantity auto operator+(const Q& lhs, const quantity<R2, Rep2>& rhs);
@@ -2623,7 +2623,7 @@ let @ be the operator
requires(!treat_as_floating_point<Rep>) && (!treat_as_floating_point<Rep2>) &&
CommonlyInvocableQuantities<std::modulus<>, quantity, quantity<R2, Rep2>>
friend constexpr Quantity auto operator%(const Q& lhs, const quantity<R2, Rep2>& rhs);
-
template<std::derived_from<quantity> Q, Representation Value>
requires(Q::unit == ::mp_units::one) &&
InvokeResultOf<quantity_spec, std::plus<>, Rep, const Value&>
@@ -2655,14 +2655,14 @@ let @ be the operator
requires(Q::unit == ::mp_units::one) &&
InvokeResultOf<quantity_spec, std::modulus<>, Rep, const Value&>
friend constexpr Quantity auto operator%(const Value& lhs, const Q& rhs);
-
template<std::derived_from<quantity> Q, auto R2, typename Rep2>
requires InvocableQuantities<std::multiplies<>, quantity, quantity<R2, Rep2>>
friend constexpr Quantity auto operator*(const Q& lhs, const quantity<R2, Rep2>& rhs);
template<std::derived_from<quantity> Q, auto R2, typename Rep2>
requires InvocableQuantities<std::divides<>, quantity, quantity<R2, Rep2>>
friend constexpr Quantity auto operator/(const Q& lhs, const quantity<R2, Rep2>& rhs);
-
template<std::derived_from<quantity> Q, typename Value>
@@ -2673,7 +2673,7 @@ let @ be the operator
requires(!Quantity<Value>) && (!Reference<Value>) &&
InvokeResultOf<quantity_spec, std::divides<>, Rep, const Value&>
friend constexpr QuantityOf<quantity_spec> auto operator/(const Q& lhs, const Value& rhs);
-
template<typename Value, std::derived_from<quantity> Q>
requires(!Quantity<Value>) && (!Reference<Value>) &&
@@ -2683,23 +2683,23 @@ let @ be the operator
requires(!Quantity<Value>) && (!Reference<Value>) &&
InvokeResultOf<quantity_spec, std::divides<>, const Value&, Rep>
friend constexpr Quantity auto operator/(const Value& lhs, const Q& rhs);
-
template<std::derived_from<quantity> Q, auto R2, typename Rep2>
requires see below
friend constexpr bool operator==(const Q& lhs, const quantity<R2, Rep2>& rhs);
template<std::derived_from<quantity> Q, auto R2, typename Rep2>
requires see below
friend constexpr auto operator<=>(const Q& lhs, const quantity<R2, Rep2>& rhs);
-
friend constexpr bool is_eq_zero(const quantity& q) requires see below;
friend constexpr bool is_neq_zero(const quantity& q) requires see below;
@@ -2719,7 +2719,7 @@ let @ be the operator
friend constexpr bool is_gt_zero(const quantity& q) requires see below;
friend constexpr bool is_lteq_zero(const quantity& q) requires see below;
friend constexpr bool is_gteq_zero(const quantity& q) requires see below;
-
template<typename FwdRep,
RepresentationOf<get_quantity_spec(R{})> Rep = std::remove_cvref_t<FwdRep>>
constexpr quantity<R{}, Rep> operator()(FwdRep&& lhs) const;
-
template<Representation ToRep, typename FwdQ, Quantity Q = std::remove_cvref_t<FwdQ>>
requires RepresentationOf<ToRep, Q::quantity_spec> &&
std::constructible_from<ToRep, typename Q::rep>
constexpr quantity<Q::reference, ToRep> value_cast(FwdQ&& q);
-
template<QuantitySpec auto ToQS, typename FwdQ, Quantity Q = std::remove_cvref_t<FwdQ>>
requires QuantitySpecCastableTo<Q::quantity_spec, ToQS>
constexpr Quantity auto quantity_cast(FwdQ&& q);
-
template<typename T>
concept PointOrigin = SymbolicConstant<T> && std::derived_from<T, point-origin-interface>;
@@ -2819,7 +2819,7 @@ for defining the origin of an affine space};
}
-
template<PointOrigin PO, Quantity Q>
requires ReferenceOf<decltype(auto(Q::reference)), PO::quantity-spec>
friend constexpr QuantityPoint auto operator-(PO po, const Q& q)
requires requires { -q; };
-
template<PointOrigin PO1, SameAbsolutePointOriginAs<PO1{}> PO2>
requires see below
friend constexpr Quantity auto operator-(PO1 po1, PO2 po2);
-
template<PointOrigin PO1, PointOrigin PO2>
friend consteval bool operator==(PO1 po1, PO2 po2);
-
template<PointOrigin PO1, PointOrigin PO2>
consteval bool same-absolute-point-origins(PO1 po1, PO2 po2); // exposition only
-
template<Reference R>
consteval PointOriginFor<get_quantity_spec(R{})> auto default_point_origin(R);
-
template<typename FwdQ, QuantityOf<quantity_spec> Q = std::remove_cvref_t<FwdQ>>
requires std::constructible_from<quantity_type, FwdQ> &&
@@ -3157,24 +3157,24 @@ to PO.template<typename FwdQ, QuantityOf<quantity_spec> Q = std::remove_cvref_t<FwdQ>>
requires std::constructible_from<quantity_type, FwdQ>
constexpr quantity_point(FwdQ&& q, decltype(PO));
-
template<typename FwdQ, PointOrigin PO2,
+
template<typename FwdQ, PointOrigin PO2,
QuantityOf<PO2::quantity-spec> Q = std::remove_cvref_t<FwdQ>>
requires std::constructible_from<quantity_type, FwdQ> && SameAbsolutePointOriginAs<PO2, PO>
constexpr quantity_point(FwdQ&& q, PO2);
-
template<QuantityPointOf<absolute_point_origin> QP>
requires std::constructible_from<quantity_type, typename QP::quantity_type>
constexpr explicit(!std::convertible_to<typename QP::quantity_type, quantity_type>)
quantity_point(const QP& qp);
-
template<QuantityPointLike QP>
requires see below
constexpr explicit(see below) quantity_point(const QP& qp);
-
template<SameAbsolutePointOriginAs<absolute_point_origin> NewPO>
constexpr QuantityPointOf<(NewPO{})> auto point_for(NewPO new_origin) const;
-
template<PointOrigin PO2>
requires(PO2{} == point_origin)
@@ -3224,15 +3224,15 @@ the function call to the corresponding member of quantity_<
template<PointOrigin PO2>
requires(PO2{} == point_origin)
constexpr const quantity_type& quantity_ref_from(PO2) const & noexcept;
-
template<PointOrigin PO2>
+
template<PointOrigin PO2>
requires requires(const quantity_point qp) { qp - PO2{}; }
constexpr Quantity auto quantity_from(PO2 rhs) const;
template<QuantityPointOf<absolute_point_origin> QP>
constexpr Quantity auto quantity_from(const QP& rhs) const;
-
constexpr quantity_point operator++(int)
requires see below;
constexpr quantity_point operator--(int)
requires see below;
-
template<std::derived_from<quantity_point> QP, auto R2, typename Rep2>
friend constexpr QuantityPoint auto operator+(const QP& qp, const quantity<R2, Rep2>& q)
requires see below;
@@ -3300,30 +3300,30 @@ let @ be the operator
template<std::derived_from<quantity_point> QP, auto R2, typename Rep2>
friend constexpr QuantityPoint auto operator-(const QP& qp, const quantity<R2, Rep2>& q)
requires see below;
-
template<std::derived_from<quantity_point> QP, QuantityPointOf<absolute_point_origin> QP2>
friend constexpr Quantity auto operator-(const QP& lhs, const QP2& rhs)
requires see below;
-
template<std::derived_from<quantity_point> QP, PointOrigin PO2>
+
template<std::derived_from<quantity_point> QP, PointOrigin PO2>
requires see below
friend constexpr Quantity auto operator-(const QP& qp, PO2 po);
template<std::derived_from<quantity_point> QP, PointOrigin PO2>
requires see below
friend constexpr Quantity auto operator-(PO2 po, const QP& qp);
-
template<std::derived_from<quantity_point> QP, QuantityPointOf<absolute_point_origin> QP2>
+
template<std::derived_from<quantity_point> QP, QuantityPointOf<absolute_point_origin> QP2>
requires see below
friend constexpr bool operator==(const QP& lhs, const QP2& rhs);
template<std::derived_from<quantity_point> QP, QuantityPointOf<absolute_point_origin> QP2>
requires see below
friend constexpr auto operator<=>(const QP& lhs, const QP2& rhs);
-
template<typename FwdRep,
RepresentationOf<get_quantity_spec(R{})> Rep = std::remove_cvref_t<FwdRep>>
constexpr quantity_point<R{}, default_point_origin(R{}), Rep> operator()(FwdRep&& lhs) const;
-
template<QuantityPoint ToQP, typename FwdFromQP,
QuantityPoint FromQP = std::remove_cvref_t<FwdFromQP>>
requires see below
constexpr QuantityPoint auto sudo-cast(FwdFromQP&& qp);
-
template<Unit auto ToU, typename FwdQP, QuantityPoint QP = std::remove_cvref_t<FwdQP>>
+
template<Unit auto ToU, typename FwdQP, QuantityPoint QP = std::remove_cvref_t<FwdQP>>
requires(convertible(QP::reference, ToU))
constexpr QuantityPoint auto value_cast(FwdQP&& qp);
-
template<Representation ToRep, typename FwdQP, QuantityPoint QP = std::remove_cvref_t<FwdQP>>
requires RepresentationOf<ToRep, QP::quantity_spec> &&
std::constructible_from<ToRep, typename QP::rep>
constexpr quantity_point<QP::reference, QP::point_origin, ToRep> value_cast(FwdQP&& qp);
-
template<Unit auto ToU, Representation ToRep, typename FwdQP,
QuantityPoint QP = std::remove_cvref_t<FwdQP>>
@@ -3393,17 +3393,17 @@ let C be
QuantityPoint QP = std::remove_cvref_t<FwdQP>>
requires see below
constexpr QuantityPoint auto value_cast(FwdQP&& qp);
-
template<Quantity ToQ, typename FwdQP, QuantityPoint QP = std::remove_cvref_t<FwdQP>>
requires(convertible(QP::reference, ToQ::unit)) && (ToQ::quantity_spec == QP::quantity_spec) &&
std::constructible_from<typename ToQ::rep, typename QP::rep>
constexpr QuantityPoint auto value_cast(FwdQP&& qp);
-
template<QuantityPoint ToQP, typename FwdQP, QuantityPoint QP = std::remove_cvref_t<FwdQP>>
@@ -3412,11 +3412,11 @@ std::constructible_from
(same-absolute-point-origins(ToQP::point_origin, QP::point_origin)) &&
std::constructible_from<typename ToQP::rep, typename QP::rep>
constexpr QuantityPoint auto value_cast(FwdQP&& qp);
-
template<QuantitySpec auto ToQS, typename FwdQP, QuantityPoint QP = std::remove_cvref_t<FwdQP>>
+
template<QuantitySpec auto ToQS, typename FwdQP, QuantityPoint QP = std::remove_cvref_t<FwdQP>>
requires QuantitySpecCastableTo<QP::quantity_spec, ToQS>
constexpr QuantityPoint auto quantity_cast(FwdQP&& qp);
-
consteval QuantitySpec auto get_common_quantity_spec(QuantitySpec auto... qs)
requires see below;
-