mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-07 14:14:27 +02:00
fix: UNITS_MSVC_WORKAROUND()
added
This commit is contained in:
@@ -67,9 +67,9 @@ struct common_quantity_reference_impl<reference<D1, U1>, reference<D2, U2>> {
|
||||
template<typename D1, typename U1, typename D2, typename U2>
|
||||
struct common_quantity_reference_impl<reference<D1, U1>, reference<D2, U2>> {
|
||||
using dimension = conditional<is_specialization_of<D1, unknown_dimension>, D2, D1>;
|
||||
static constexpr Magnitude auto m1 = D1::base_units_ratio * U1::mag;
|
||||
static constexpr Magnitude auto m2 = D2::base_units_ratio * U2::mag;
|
||||
static constexpr Magnitude auto cm = common_magnitude(m1, m2);
|
||||
static constexpr UNITS_MSVC_WORKAROUND(Magnitude) auto m1 = D1::base_units_ratio * U1::mag;
|
||||
static constexpr UNITS_MSVC_WORKAROUND(Magnitude) auto m2 = D2::base_units_ratio * U2::mag;
|
||||
static constexpr UNITS_MSVC_WORKAROUND(Magnitude) auto cm = common_magnitude(m1, m2);
|
||||
using unit = downcast_unit<dimension, cm / dimension::base_units_ratio>;
|
||||
using type = reference<dimension, unit>;
|
||||
};
|
||||
|
10
src/core/include/units/bits/external/hacks.h
vendored
10
src/core/include/units/bits/external/hacks.h
vendored
@@ -100,6 +100,16 @@
|
||||
|
||||
#endif
|
||||
|
||||
#if UNITS_COMP_MSVC
|
||||
|
||||
#define UNITS_MSVC_WORKAROUND(X)
|
||||
|
||||
#else
|
||||
|
||||
#define UNITS_MSVC_WORKAROUND(X) (X)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
namespace std {
|
||||
|
||||
|
@@ -85,7 +85,7 @@ template<typename Child, Unit U, Exponent... Es>
|
||||
struct derived_dimension : downcast_dispatch<Child, typename detail::make_dimension<Es...>> {
|
||||
using recipe = exponent_list<Es...>;
|
||||
using coherent_unit = U;
|
||||
static constexpr Magnitude auto base_units_ratio =
|
||||
static constexpr UNITS_MSVC_WORKAROUND(Magnitude) auto base_units_ratio =
|
||||
detail::absolute_magnitude(typename derived_dimension::exponents());
|
||||
};
|
||||
|
||||
|
@@ -36,7 +36,7 @@ namespace detail {
|
||||
|
||||
template<ratio R>
|
||||
struct prefix_base : downcast_base<prefix_base<R>> {
|
||||
static constexpr Magnitude auto mag = as_magnitude<R>();
|
||||
static constexpr UNITS_MSVC_WORKAROUND(Magnitude) auto mag = as_magnitude<R>();
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
@@ -60,7 +60,7 @@ inline constexpr bool can_be_prefixed = false;
|
||||
*/
|
||||
template<Magnitude auto M, typename U>
|
||||
struct scaled_unit : downcast_base<scaled_unit<M, U>> {
|
||||
static constexpr Magnitude auto mag = M;
|
||||
static constexpr UNITS_MSVC_WORKAROUND(Magnitude) auto mag = M;
|
||||
using reference = U;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user