mirror of
https://github.com/mpusz/mp-units.git
synced 2025-07-30 18:37:15 +02:00
std::conditional_t replaced with custom implementation
This commit is contained in:
@ -141,14 +141,13 @@ namespace units {
|
|||||||
template<Exponent E1, Exponent... ERest>
|
template<Exponent E1, Exponent... ERest>
|
||||||
struct dim_consolidate<dimension<E1, ERest...>> {
|
struct dim_consolidate<dimension<E1, ERest...>> {
|
||||||
using rest = dim_consolidate_t<dimension<ERest...>>;
|
using rest = dim_consolidate_t<dimension<ERest...>>;
|
||||||
using type =
|
using type = conditional<std::is_same_v<rest, dimension<>>, dimension<E1>, type_list_push_front<rest, E1>>;
|
||||||
std::conditional_t<std::is_same_v<rest, dimension<>>, dimension<E1>, type_list_push_front<rest, E1>>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename D, int V1, int V2, Exponent... ERest>
|
template<typename D, int V1, int V2, Exponent... ERest>
|
||||||
struct dim_consolidate<dimension<exp<D, V1>, exp<D, V2>, ERest...>> {
|
struct dim_consolidate<dimension<exp<D, V1>, exp<D, V2>, ERest...>> {
|
||||||
using type = std::conditional_t<V1 + V2 == 0, dim_consolidate_t<dimension<ERest...>>,
|
using type = conditional<V1 + V2 == 0, dim_consolidate_t<dimension<ERest...>>,
|
||||||
dim_consolidate_t<dimension<exp<D, V1 + V2>, ERest...>>>;
|
dim_consolidate_t<dimension<exp<D, V1 + V2>, ERest...>>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
@ -74,8 +74,8 @@ namespace units {
|
|||||||
template<typename BaseDimension, Unit U, Unit... Rest>
|
template<typename BaseDimension, Unit U, Unit... Rest>
|
||||||
struct get_ratio<BaseDimension, U, Rest...> {
|
struct get_ratio<BaseDimension, U, Rest...> {
|
||||||
using unit_base_dim = get_unit_base_dim<typename U::dimension::base_type>::dimension;
|
using unit_base_dim = get_unit_base_dim<typename U::dimension::base_type>::dimension;
|
||||||
using ratio = std::conditional_t<unit_base_dim::value == BaseDimension::value, typename U::ratio,
|
using ratio = conditional<unit_base_dim::value == BaseDimension::value, typename U::ratio,
|
||||||
typename get_ratio<BaseDimension, Rest...>::ratio>;
|
typename get_ratio<BaseDimension, Rest...>::ratio>;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<Ratio Result, int UnitExpValue, Ratio UnitRatio>
|
template<Ratio Result, int UnitExpValue, Ratio UnitRatio>
|
||||||
@ -88,8 +88,8 @@ namespace units {
|
|||||||
|
|
||||||
template<Ratio Result, int UnitExpValue, Ratio UnitRatio>
|
template<Ratio Result, int UnitExpValue, Ratio UnitRatio>
|
||||||
struct ratio_op {
|
struct ratio_op {
|
||||||
using calc_ratio = std::conditional_t<(UnitExpValue > 0), ratio_multiply<Result, UnitRatio>,
|
using calc_ratio = conditional<(UnitExpValue > 0), ratio_multiply<Result, UnitRatio>,
|
||||||
ratio_divide<Result, UnitRatio>>;
|
ratio_divide<Result, UnitRatio>>;
|
||||||
static constexpr int value = UnitExpValue > 0 ? UnitExpValue - 1 : UnitExpValue + 1;
|
static constexpr int value = UnitExpValue > 0 ? UnitExpValue - 1 : UnitExpValue + 1;
|
||||||
using ratio = ratio_op<calc_ratio, value, UnitRatio>::ratio;
|
using ratio = ratio_op<calc_ratio, value, UnitRatio>::ratio;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user