mirror of
https://github.com/mpusz/mp-units.git
synced 2025-07-29 18:07:16 +02:00
refactor: get_complexity
refactored to returned maximum complexity of an element (instead of the sum of elements)
This commit is contained in:
@ -610,7 +610,10 @@ template<QuantitySpec Q>
|
||||
template<typename... Ts>
|
||||
[[nodiscard]] consteval int get_complexity(type_list<Ts...>)
|
||||
{
|
||||
return (0 + ... + get_complexity(Ts{}));
|
||||
if constexpr (sizeof...(Ts) == 0)
|
||||
return 0;
|
||||
else
|
||||
return max({get_complexity(Ts{})...});
|
||||
}
|
||||
|
||||
template<QuantitySpec Q, int... Ints>
|
||||
@ -629,7 +632,7 @@ template<QuantitySpec Q>
|
||||
[[nodiscard]] consteval int get_complexity(Q)
|
||||
{
|
||||
if constexpr (DerivedQuantitySpec<Q>)
|
||||
return get_complexity(typename Q::_num_{}) + get_complexity(typename Q::_den_{});
|
||||
return max(get_complexity(typename Q::_num_{}), get_complexity(typename Q::_den_{}));
|
||||
else if constexpr (requires { Q::_equation_; })
|
||||
return 1 + get_complexity(Q::_equation_);
|
||||
else
|
||||
|
@ -458,9 +458,15 @@ static_assert(get_complexity(force) == 3);
|
||||
|
||||
static_assert(get_complexity(acceleration * time) == 2);
|
||||
static_assert(get_complexity(acceleration / time) == 2);
|
||||
static_assert(get_complexity(speed * area) == 2);
|
||||
static_assert(get_complexity(speed / frequency) == 2);
|
||||
static_assert(get_complexity(speed * area / frequency) == 3);
|
||||
static_assert(get_complexity(speed * area) == 1);
|
||||
static_assert(get_complexity(acceleration * area) == 2);
|
||||
static_assert(get_complexity(acceleration * force) == 3);
|
||||
static_assert(get_complexity(speed / frequency) == 1);
|
||||
static_assert(get_complexity(acceleration / frequency) == 2);
|
||||
static_assert(get_complexity(force / frequency) == 3);
|
||||
static_assert(get_complexity(area / acceleration) == 2);
|
||||
static_assert(get_complexity(area / force) == 3);
|
||||
static_assert(get_complexity(speed * area / frequency) == 1);
|
||||
|
||||
// explode
|
||||
static_assert(explode<get_complexity(inverse(time))>(frequency).quantity == inverse(period_duration));
|
||||
|
Reference in New Issue
Block a user