mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-03 20:34:26 +02:00
fix: workarounds for not-working CWG2387
This commit is contained in:
@@ -42,7 +42,7 @@ import mp_units.core;
|
|||||||
|
|
||||||
template<std::movable T, MP_UNITS_CONSTRAINED_NTTP_WORKAROUND(std::convertible_to<T>) auto Min,
|
template<std::movable T, MP_UNITS_CONSTRAINED_NTTP_WORKAROUND(std::convertible_to<T>) auto Min,
|
||||||
MP_UNITS_CONSTRAINED_NTTP_WORKAROUND(std::convertible_to<T>) auto Max>
|
MP_UNITS_CONSTRAINED_NTTP_WORKAROUND(std::convertible_to<T>) auto Max>
|
||||||
constexpr auto is_in_range = [](const auto& v) { return std::clamp(v, T{Min}, T{Max}) == v; };
|
MP_UNITS_INLINE constexpr auto is_in_range = [](const auto& v) { return std::clamp(v, T{Min}, T{Max}) == v; };
|
||||||
|
|
||||||
template<std::movable T, MP_UNITS_CONSTRAINED_NTTP_WORKAROUND(std::convertible_to<T>) auto Min,
|
template<std::movable T, MP_UNITS_CONSTRAINED_NTTP_WORKAROUND(std::convertible_to<T>) auto Min,
|
||||||
MP_UNITS_CONSTRAINED_NTTP_WORKAROUND(std::convertible_to<T>) auto Max>
|
MP_UNITS_CONSTRAINED_NTTP_WORKAROUND(std::convertible_to<T>) auto Max>
|
||||||
|
@@ -77,6 +77,9 @@
|
|||||||
#define MP_UNITS_HOSTED __STDC_HOSTED__
|
#define MP_UNITS_HOSTED __STDC_HOSTED__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// workarounds for https://cplusplus.github.io/CWG/issues/2387.html
|
||||||
|
#define MP_UNITS_INLINE inline
|
||||||
|
|
||||||
#if MP_UNITS_COMP_MSVC
|
#if MP_UNITS_COMP_MSVC
|
||||||
|
|
||||||
#define MP_UNITS_TYPENAME typename
|
#define MP_UNITS_TYPENAME typename
|
||||||
|
@@ -43,25 +43,25 @@ template<std::intmax_t Value>
|
|||||||
constexpr basic_fixed_string superscript_number = u8"";
|
constexpr basic_fixed_string superscript_number = u8"";
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
constexpr basic_fixed_string superscript_number<0> = u8"\u2070";
|
MP_UNITS_INLINE constexpr basic_fixed_string superscript_number<0> = u8"\u2070";
|
||||||
template<>
|
template<>
|
||||||
constexpr basic_fixed_string superscript_number<1> = u8"\u00b9";
|
MP_UNITS_INLINE constexpr basic_fixed_string superscript_number<1> = u8"\u00b9";
|
||||||
template<>
|
template<>
|
||||||
constexpr basic_fixed_string superscript_number<2> = u8"\u00b2";
|
MP_UNITS_INLINE constexpr basic_fixed_string superscript_number<2> = u8"\u00b2";
|
||||||
template<>
|
template<>
|
||||||
constexpr basic_fixed_string superscript_number<3> = u8"\u00b3";
|
MP_UNITS_INLINE constexpr basic_fixed_string superscript_number<3> = u8"\u00b3";
|
||||||
template<>
|
template<>
|
||||||
constexpr basic_fixed_string superscript_number<4> = u8"\u2074";
|
MP_UNITS_INLINE constexpr basic_fixed_string superscript_number<4> = u8"\u2074";
|
||||||
template<>
|
template<>
|
||||||
constexpr basic_fixed_string superscript_number<5> = u8"\u2075";
|
MP_UNITS_INLINE constexpr basic_fixed_string superscript_number<5> = u8"\u2075";
|
||||||
template<>
|
template<>
|
||||||
constexpr basic_fixed_string superscript_number<6> = u8"\u2076";
|
MP_UNITS_INLINE constexpr basic_fixed_string superscript_number<6> = u8"\u2076";
|
||||||
template<>
|
template<>
|
||||||
constexpr basic_fixed_string superscript_number<7> = u8"\u2077";
|
MP_UNITS_INLINE constexpr basic_fixed_string superscript_number<7> = u8"\u2077";
|
||||||
template<>
|
template<>
|
||||||
constexpr basic_fixed_string superscript_number<8> = u8"\u2078";
|
MP_UNITS_INLINE constexpr basic_fixed_string superscript_number<8> = u8"\u2078";
|
||||||
template<>
|
template<>
|
||||||
constexpr basic_fixed_string superscript_number<9> = u8"\u2079";
|
MP_UNITS_INLINE constexpr basic_fixed_string superscript_number<9> = u8"\u2079";
|
||||||
|
|
||||||
inline constexpr symbol_text superscript_minus(u8"\u207b", "-");
|
inline constexpr symbol_text superscript_minus(u8"\u207b", "-");
|
||||||
|
|
||||||
|
@@ -72,7 +72,7 @@ template<int Num>
|
|||||||
constexpr bool valid_ratio<Num, 0> = false;
|
constexpr bool valid_ratio<Num, 0> = false;
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
constexpr bool valid_ratio<0, 0> = false;
|
MP_UNITS_INLINE constexpr bool valid_ratio<0, 0> = false;
|
||||||
|
|
||||||
template<int Num, int... Den>
|
template<int Num, int... Den>
|
||||||
constexpr bool positive_ratio = gt_zero<Num>;
|
constexpr bool positive_ratio = gt_zero<Num>;
|
||||||
@@ -84,7 +84,7 @@ template<int Num, int... Den>
|
|||||||
constexpr bool ratio_one = false;
|
constexpr bool ratio_one = false;
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
constexpr bool ratio_one<1> = true;
|
MP_UNITS_INLINE constexpr bool ratio_one<1> = true;
|
||||||
|
|
||||||
template<int N>
|
template<int N>
|
||||||
constexpr bool ratio_one<N, N> = true;
|
constexpr bool ratio_one<N, N> = true;
|
||||||
|
@@ -678,11 +678,11 @@ template<Unit auto U>
|
|||||||
constexpr bool space_before_unit_symbol = true;
|
constexpr bool space_before_unit_symbol = true;
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
constexpr bool space_before_unit_symbol<one> = false;
|
MP_UNITS_INLINE constexpr bool space_before_unit_symbol<one> = false;
|
||||||
template<>
|
template<>
|
||||||
constexpr bool space_before_unit_symbol<percent> = false;
|
MP_UNITS_INLINE constexpr bool space_before_unit_symbol<percent> = false;
|
||||||
template<>
|
template<>
|
||||||
constexpr bool space_before_unit_symbol<per_mille> = false;
|
MP_UNITS_INLINE constexpr bool space_before_unit_symbol<per_mille> = false;
|
||||||
|
|
||||||
// get_unit_symbol
|
// get_unit_symbol
|
||||||
|
|
||||||
|
@@ -62,8 +62,8 @@ inline constexpr auto deg2 = square(degree);
|
|||||||
} // namespace angular
|
} // namespace angular
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
constexpr bool space_before_unit_symbol<angular::degree> = false;
|
MP_UNITS_INLINE constexpr bool space_before_unit_symbol<angular::degree> = false;
|
||||||
template<>
|
template<>
|
||||||
constexpr bool space_before_unit_symbol<angular::gradian> = false;
|
MP_UNITS_INLINE constexpr bool space_before_unit_symbol<angular::gradian> = false;
|
||||||
|
|
||||||
} // namespace mp_units
|
} // namespace mp_units
|
||||||
|
@@ -126,10 +126,10 @@ using namespace non_si;
|
|||||||
} // namespace si
|
} // namespace si
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
constexpr bool space_before_unit_symbol<non_si::degree> = false;
|
MP_UNITS_INLINE constexpr bool space_before_unit_symbol<non_si::degree> = false;
|
||||||
template<>
|
template<>
|
||||||
constexpr bool space_before_unit_symbol<non_si::arcminute> = false;
|
MP_UNITS_INLINE constexpr bool space_before_unit_symbol<non_si::arcminute> = false;
|
||||||
template<>
|
template<>
|
||||||
constexpr bool space_before_unit_symbol<non_si::arcsecond> = false;
|
MP_UNITS_INLINE constexpr bool space_before_unit_symbol<non_si::arcsecond> = false;
|
||||||
|
|
||||||
} // namespace mp_units
|
} // namespace mp_units
|
||||||
|
Reference in New Issue
Block a user