mirror of
https://github.com/mpusz/mp-units.git
synced 2025-07-30 18:37:15 +02:00
fix: const
was leaking to some SymbolicConstant
s
This commit is contained in:
@ -925,10 +925,10 @@ template<typename From, typename To>
|
|||||||
return extract_results{false};
|
return extract_results{false};
|
||||||
else if constexpr (from_exp > to_exp)
|
else if constexpr (from_exp > to_exp)
|
||||||
return extract_results{true, from_factor, to_factor, prepend_rest::first,
|
return extract_results{true, from_factor, to_factor, prepend_rest::first,
|
||||||
power_or_T<decltype(from_factor), from_exp - to_exp>{}};
|
power_or_T<std::remove_const_t<decltype(from_factor)>, from_exp - to_exp>{}};
|
||||||
else
|
else
|
||||||
return extract_results{true, from_factor, to_factor, prepend_rest::second,
|
return extract_results{true, from_factor, to_factor, prepend_rest::second,
|
||||||
power_or_T<decltype(to_factor), to_exp - from_exp>{}};
|
power_or_T<std::remove_const_t<decltype(to_factor)>, to_exp - from_exp>{}};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ inline constexpr auto speed = isq::length / isq::time;
|
|||||||
static_assert(QuantitySpec<struct isq::length>);
|
static_assert(QuantitySpec<struct isq::length>);
|
||||||
static_assert(QuantitySpec<struct isq::radius>);
|
static_assert(QuantitySpec<struct isq::radius>);
|
||||||
static_assert(QuantitySpec<struct isq::speed>);
|
static_assert(QuantitySpec<struct isq::speed>);
|
||||||
static_assert(QuantitySpec<decltype(kind_of<isq::length>)>);
|
static_assert(QuantitySpec<kind_of_<struct isq::length>>);
|
||||||
static_assert(QuantitySpec<decltype(isq::length / isq::time)>);
|
static_assert(QuantitySpec<decltype(isq::length / isq::time)>);
|
||||||
static_assert(QuantitySpec<decltype(pow<2>(isq::length))>);
|
static_assert(QuantitySpec<decltype(pow<2>(isq::length))>);
|
||||||
static_assert(QuantitySpec<struct dimensionless>);
|
static_assert(QuantitySpec<struct dimensionless>);
|
||||||
@ -93,7 +93,7 @@ static_assert(!QuantitySpec<int>);
|
|||||||
static_assert(detail::NamedQuantitySpec<struct isq::length>);
|
static_assert(detail::NamedQuantitySpec<struct isq::length>);
|
||||||
static_assert(detail::NamedQuantitySpec<struct isq::radius>);
|
static_assert(detail::NamedQuantitySpec<struct isq::radius>);
|
||||||
static_assert(detail::NamedQuantitySpec<struct isq::speed>);
|
static_assert(detail::NamedQuantitySpec<struct isq::speed>);
|
||||||
static_assert(!detail::NamedQuantitySpec<std::remove_const_t<decltype(kind_of<isq::length>)>>);
|
static_assert(!detail::NamedQuantitySpec<kind_of_<struct isq::length>>);
|
||||||
static_assert(!detail::NamedQuantitySpec<decltype(isq::length / isq::time)>);
|
static_assert(!detail::NamedQuantitySpec<decltype(isq::length / isq::time)>);
|
||||||
static_assert(!detail::NamedQuantitySpec<decltype(pow<2>(isq::length))>);
|
static_assert(!detail::NamedQuantitySpec<decltype(pow<2>(isq::length))>);
|
||||||
static_assert(detail::NamedQuantitySpec<struct dimensionless>);
|
static_assert(detail::NamedQuantitySpec<struct dimensionless>);
|
||||||
@ -104,7 +104,7 @@ static_assert(!detail::NamedQuantitySpec<int>);
|
|||||||
// DerivedQuantitySpec
|
// DerivedQuantitySpec
|
||||||
static_assert(!detail::DerivedQuantitySpec<struct isq::length>);
|
static_assert(!detail::DerivedQuantitySpec<struct isq::length>);
|
||||||
static_assert(!detail::DerivedQuantitySpec<struct isq::radius>);
|
static_assert(!detail::DerivedQuantitySpec<struct isq::radius>);
|
||||||
static_assert(!detail::DerivedQuantitySpec<decltype(kind_of<isq::length>)>);
|
static_assert(!detail::DerivedQuantitySpec<kind_of_<struct isq::length>>);
|
||||||
static_assert(!detail::DerivedQuantitySpec<struct isq::speed>);
|
static_assert(!detail::DerivedQuantitySpec<struct isq::speed>);
|
||||||
static_assert(detail::DerivedQuantitySpec<decltype(isq::length / isq::time)>);
|
static_assert(detail::DerivedQuantitySpec<decltype(isq::length / isq::time)>);
|
||||||
static_assert(detail::DerivedQuantitySpec<decltype(pow<2>(isq::length))>);
|
static_assert(detail::DerivedQuantitySpec<decltype(pow<2>(isq::length))>);
|
||||||
@ -116,7 +116,7 @@ static_assert(!detail::DerivedQuantitySpec<int>);
|
|||||||
// QuantityKindSpec
|
// QuantityKindSpec
|
||||||
static_assert(!detail::QuantityKindSpec<struct isq::length>);
|
static_assert(!detail::QuantityKindSpec<struct isq::length>);
|
||||||
static_assert(!detail::QuantityKindSpec<struct isq::radius>);
|
static_assert(!detail::QuantityKindSpec<struct isq::radius>);
|
||||||
static_assert(detail::QuantityKindSpec<std::remove_const_t<decltype(kind_of<isq::length>)>>);
|
static_assert(detail::QuantityKindSpec<kind_of_<struct isq::length>>);
|
||||||
static_assert(!detail::QuantityKindSpec<struct isq::speed>);
|
static_assert(!detail::QuantityKindSpec<struct isq::speed>);
|
||||||
static_assert(!detail::QuantityKindSpec<decltype(isq::length / isq::time)>);
|
static_assert(!detail::QuantityKindSpec<decltype(isq::length / isq::time)>);
|
||||||
static_assert(!detail::QuantityKindSpec<decltype(pow<2>(isq::length))>);
|
static_assert(!detail::QuantityKindSpec<decltype(pow<2>(isq::length))>);
|
||||||
@ -130,8 +130,8 @@ static_assert(!detail::QuantityKindSpec<int>);
|
|||||||
|
|
||||||
// Unit
|
// Unit
|
||||||
static_assert(Unit<struct si::metre>);
|
static_assert(Unit<struct si::metre>);
|
||||||
static_assert(Unit<decltype(si::kilogram)>);
|
static_assert(Unit<std::remove_const_t<decltype(si::kilogram)>>);
|
||||||
static_assert(Unit<decltype(si::kilo<si::gram>)>);
|
static_assert(Unit<si::kilo_<struct si::gram>>);
|
||||||
static_assert(Unit<struct natural::electronvolt>);
|
static_assert(Unit<struct natural::electronvolt>);
|
||||||
static_assert(Unit<decltype(si::metre / si::second)>);
|
static_assert(Unit<decltype(si::metre / si::second)>);
|
||||||
static_assert(Unit<decltype(inverse(si::second))>);
|
static_assert(Unit<decltype(inverse(si::second))>);
|
||||||
@ -156,8 +156,8 @@ static_assert(!Unit<std::chrono::seconds>);
|
|||||||
// PrefixableUnit
|
// PrefixableUnit
|
||||||
static_assert(PrefixableUnit<struct si::metre>);
|
static_assert(PrefixableUnit<struct si::metre>);
|
||||||
static_assert(PrefixableUnit<struct natural::electronvolt>);
|
static_assert(PrefixableUnit<struct natural::electronvolt>);
|
||||||
static_assert(!PrefixableUnit<decltype(si::kilogram)>);
|
static_assert(!PrefixableUnit<std::remove_const_t<decltype(si::kilogram)>>);
|
||||||
static_assert(!PrefixableUnit<decltype(si::kilo<si::gram>)>);
|
static_assert(!PrefixableUnit<si::kilo_<struct si::gram>>);
|
||||||
static_assert(!PrefixableUnit<decltype(si::metre / si::second)>);
|
static_assert(!PrefixableUnit<decltype(si::metre / si::second)>);
|
||||||
static_assert(!PrefixableUnit<decltype(inverse(si::second))>);
|
static_assert(!PrefixableUnit<decltype(inverse(si::second))>);
|
||||||
static_assert(!PrefixableUnit<decltype(mag<10> * si::second)>);
|
static_assert(!PrefixableUnit<decltype(mag<10> * si::second)>);
|
||||||
@ -181,8 +181,8 @@ static_assert(!PrefixableUnit<std::chrono::seconds>);
|
|||||||
// AssociatedUnit
|
// AssociatedUnit
|
||||||
static_assert(AssociatedUnit<struct si::metre>);
|
static_assert(AssociatedUnit<struct si::metre>);
|
||||||
static_assert(!AssociatedUnit<struct natural::electronvolt>);
|
static_assert(!AssociatedUnit<struct natural::electronvolt>);
|
||||||
static_assert(AssociatedUnit<decltype(si::kilogram)>);
|
static_assert(AssociatedUnit<std::remove_const_t<decltype(si::kilogram)>>);
|
||||||
static_assert(AssociatedUnit<decltype(si::kilo<si::gram>)>);
|
static_assert(AssociatedUnit<si::kilo_<struct si::gram>>);
|
||||||
static_assert(AssociatedUnit<decltype(si::metre / si::second)>);
|
static_assert(AssociatedUnit<decltype(si::metre / si::second)>);
|
||||||
static_assert(AssociatedUnit<decltype(inverse(si::second))>);
|
static_assert(AssociatedUnit<decltype(inverse(si::second))>);
|
||||||
static_assert(AssociatedUnit<decltype(mag<10> * si::second)>);
|
static_assert(AssociatedUnit<decltype(mag<10> * si::second)>);
|
||||||
@ -206,7 +206,7 @@ static_assert(!AssociatedUnit<std::chrono::seconds>);
|
|||||||
// UnitOf
|
// UnitOf
|
||||||
static_assert(UnitOf<struct si::metre, isq::length>);
|
static_assert(UnitOf<struct si::metre, isq::length>);
|
||||||
static_assert(UnitOf<struct si::metre, isq::radius>);
|
static_assert(UnitOf<struct si::metre, isq::radius>);
|
||||||
static_assert(UnitOf<decltype(si::kilogram), isq::mass>);
|
static_assert(UnitOf<std::remove_const_t<decltype(si::kilogram)>, isq::mass>);
|
||||||
static_assert(UnitOf<struct si::hertz, isq::frequency>);
|
static_assert(UnitOf<struct si::hertz, isq::frequency>);
|
||||||
static_assert(UnitOf<struct si::hertz, inverse(isq::time)>);
|
static_assert(UnitOf<struct si::hertz, inverse(isq::time)>);
|
||||||
static_assert(UnitOf<struct one, dimensionless>);
|
static_assert(UnitOf<struct one, dimensionless>);
|
||||||
@ -227,7 +227,7 @@ static_assert(Reference<decltype(isq::radius[si::metre])>);
|
|||||||
static_assert(Reference<decltype(isq::radius[si::metre] / isq::time[si::second])>);
|
static_assert(Reference<decltype(isq::radius[si::metre] / isq::time[si::second])>);
|
||||||
static_assert(!Reference<struct natural::electronvolt>);
|
static_assert(!Reference<struct natural::electronvolt>);
|
||||||
static_assert(!Reference<struct isq::length>);
|
static_assert(!Reference<struct isq::length>);
|
||||||
static_assert(!Reference<decltype(kind_of<isq::length>)>);
|
static_assert(!Reference<kind_of_<struct isq::length>>);
|
||||||
static_assert(!Reference<struct isq::dim_length>);
|
static_assert(!Reference<struct isq::dim_length>);
|
||||||
static_assert(!Reference<int>);
|
static_assert(!Reference<int>);
|
||||||
|
|
||||||
|
@ -89,11 +89,11 @@ inline constexpr struct speed_of_light_in_vacuum_ final : named_unit<"c", mag<29
|
|||||||
static_assert(Unit<metre_>);
|
static_assert(Unit<metre_>);
|
||||||
static_assert(Unit<second_>);
|
static_assert(Unit<second_>);
|
||||||
static_assert(Unit<nu_second_>);
|
static_assert(Unit<nu_second_>);
|
||||||
static_assert(Unit<decltype(kilogram)>);
|
static_assert(Unit<std::remove_const_t<decltype(kilogram)>>);
|
||||||
static_assert(Unit<hertz_>);
|
static_assert(Unit<hertz_>);
|
||||||
static_assert(Unit<newton_>);
|
static_assert(Unit<newton_>);
|
||||||
static_assert(Unit<minute_>);
|
static_assert(Unit<minute_>);
|
||||||
static_assert(Unit<decltype(kilo<gram>)>);
|
static_assert(Unit<si::kilo_<struct gram_>>);
|
||||||
static_assert(Unit<decltype(square(metre))>);
|
static_assert(Unit<decltype(square(metre))>);
|
||||||
static_assert(Unit<decltype(cubic(metre))>);
|
static_assert(Unit<decltype(cubic(metre))>);
|
||||||
static_assert(Unit<decltype(mag<60> * second)>);
|
static_assert(Unit<decltype(mag<60> * second)>);
|
||||||
@ -101,20 +101,20 @@ static_assert(Unit<decltype(second * second)>);
|
|||||||
static_assert(Unit<decltype(nu_second * nu_second)>);
|
static_assert(Unit<decltype(nu_second * nu_second)>);
|
||||||
static_assert(Unit<decltype(metre / second)>);
|
static_assert(Unit<decltype(metre / second)>);
|
||||||
static_assert(Unit<decltype(nu_second / nu_second)>);
|
static_assert(Unit<decltype(nu_second / nu_second)>);
|
||||||
static_assert(Unit<decltype(kilometre)>);
|
static_assert(Unit<std::remove_const_t<decltype(kilometre)>>);
|
||||||
|
|
||||||
static_assert(PrefixableUnit<metre_>);
|
static_assert(PrefixableUnit<metre_>);
|
||||||
static_assert(PrefixableUnit<hertz_>);
|
static_assert(PrefixableUnit<hertz_>);
|
||||||
static_assert(PrefixableUnit<newton_>);
|
static_assert(PrefixableUnit<newton_>);
|
||||||
static_assert(PrefixableUnit<minute_>);
|
static_assert(PrefixableUnit<minute_>);
|
||||||
static_assert(PrefixableUnit<radian_>);
|
static_assert(PrefixableUnit<radian_>);
|
||||||
static_assert(!PrefixableUnit<decltype(kilogram)>);
|
static_assert(!PrefixableUnit<std::remove_const_t<decltype(kilogram)>>);
|
||||||
static_assert(!PrefixableUnit<decltype(kilojoule)>);
|
static_assert(!PrefixableUnit<decltype(kilojoule)>);
|
||||||
static_assert(!PrefixableUnit<decltype(kilo<gram>)>);
|
static_assert(!PrefixableUnit<si::kilo_<struct gram_>>);
|
||||||
static_assert(!PrefixableUnit<decltype(square(metre))>);
|
static_assert(!PrefixableUnit<decltype(square(metre))>);
|
||||||
static_assert(!PrefixableUnit<decltype(cubic(metre))>);
|
static_assert(!PrefixableUnit<decltype(cubic(metre))>);
|
||||||
static_assert(!PrefixableUnit<decltype(mag<60> * second)>);
|
static_assert(!PrefixableUnit<decltype(mag<60> * second)>);
|
||||||
static_assert(!PrefixableUnit<decltype(kilometre)>);
|
static_assert(!PrefixableUnit<std::remove_const_t<decltype(kilometre)>>);
|
||||||
|
|
||||||
// named unit
|
// named unit
|
||||||
static_assert(is_of_type<metre, metre_>);
|
static_assert(is_of_type<metre, metre_>);
|
||||||
|
Reference in New Issue
Block a user