std::conditional_t replaced with custom implementation

This commit is contained in:
Mateusz Pusz
2019-05-28 16:21:28 +02:00
parent 9c0f2c6878
commit 25a470dcb7
2 changed files with 7 additions and 8 deletions

View File

@ -141,14 +141,13 @@ namespace units {
template<Exponent E1, Exponent... ERest>
struct dim_consolidate<dimension<E1, ERest...>> {
using rest = dim_consolidate_t<dimension<ERest...>>;
using type =
std::conditional_t<std::is_same_v<rest, dimension<>>, dimension<E1>, type_list_push_front<rest, E1>>;
using type = conditional<std::is_same_v<rest, dimension<>>, dimension<E1>, type_list_push_front<rest, E1>>;
};
template<typename D, int V1, int V2, Exponent... 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...>>,
dim_consolidate_t<dimension<exp<D, V1 + V2>, ERest...>>>;
using type = conditional<V1 + V2 == 0, dim_consolidate_t<dimension<ERest...>>,
dim_consolidate_t<dimension<exp<D, V1 + V2>, ERest...>>>;
};
} // namespace detail

View File

@ -74,8 +74,8 @@ namespace units {
template<typename BaseDimension, Unit U, Unit... Rest>
struct get_ratio<BaseDimension, U, Rest...> {
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,
typename get_ratio<BaseDimension, Rest...>::ratio>;
using ratio = conditional<unit_base_dim::value == BaseDimension::value, typename U::ratio,
typename get_ratio<BaseDimension, Rest...>::ratio>;
};
template<Ratio Result, int UnitExpValue, Ratio UnitRatio>
@ -88,8 +88,8 @@ namespace units {
template<Ratio Result, int UnitExpValue, Ratio UnitRatio>
struct ratio_op {
using calc_ratio = std::conditional_t<(UnitExpValue > 0), ratio_multiply<Result, UnitRatio>,
ratio_divide<Result, UnitRatio>>;
using calc_ratio = conditional<(UnitExpValue > 0), ratio_multiply<Result, UnitRatio>,
ratio_divide<Result, UnitRatio>>;
static constexpr int value = UnitExpValue > 0 ? UnitExpValue - 1 : UnitExpValue + 1;
using ratio = ratio_op<calc_ratio, value, UnitRatio>::ratio;
};