fix: extraneous space in unit symbol having only denominators removed

This commit is contained in:
Mateusz Pusz
2024-10-03 18:34:37 +02:00
parent 2c15f3c058
commit 5c1035a312
2 changed files with 5 additions and 5 deletions

View File

@@ -859,18 +859,16 @@ constexpr Out unit_symbol_impl(Out out, const type_list<Nums...>& nums, const ty
return unit_symbol_impl<CharT>(out, nums, fmt, false);
} else {
using enum unit_symbol_solidus;
if constexpr (sizeof...(Nums) > 0) {
out = unit_symbol_impl<CharT>(out, nums, fmt, false);
}
if constexpr (sizeof...(Nums) > 0) out = unit_symbol_impl<CharT>(out, nums, fmt, false);
if (fmt.solidus == always || (fmt.solidus == one_denominator && sizeof...(Dens) == 1)) {
if constexpr (sizeof...(Nums) == 0) *out++ = '1';
*out++ = '/';
} else {
if (sizeof...(Dens) > 1) *out++ = '(';
} else if constexpr (sizeof...(Nums) > 0) {
out = print_separator<CharT>(out, fmt);
}
if (fmt.solidus == always && sizeof...(Dens) > 1) *out++ = '(';
const bool negative_power = fmt.solidus == never || (fmt.solidus == one_denominator && sizeof...(Dens) > 1);
out = unit_symbol_impl<CharT>(out, dens, fmt, negative_power);
if (fmt.solidus == always && sizeof...(Dens) > 1) *out++ = ')';

View File

@@ -175,6 +175,8 @@ static_assert(unit_symbol<usf{.solidus = never}>(kilogram * metre / square(secon
static_assert(unit_symbol<usf{.encoding = ascii, .solidus = never}>(kilogram * metre / square(second)) == "kg m s^-2");
static_assert(unit_symbol<usf{.solidus = never, .separator = half_high_dot}>(kilogram * metre / square(second)) ==
"kg⋅m⋅s⁻²");
static_assert(unit_symbol(one / metre / square(second)) == "m⁻¹ s⁻²");
static_assert(unit_symbol<usf{.solidus = always}>(one / metre / square(second)) == "1/(m s²)");
static_assert(unit_symbol(kilogram / metre / square(second)) == "kg m⁻¹ s⁻²");
static_assert(unit_symbol<usf{.separator = half_high_dot}>(kilogram / metre / square(second)) == "kg⋅m⁻¹⋅s⁻²");
static_assert(unit_symbol<usf{.encoding = ascii}>(kilogram / metre / square(second)) == "kg m^-1 s^-2");