diff --git a/src/core/include/units/bits/expression_template.h b/src/core/include/units/bits/expression_template.h index 720d401e..a4dbc71f 100644 --- a/src/core/include/units/bits/expression_template.h +++ b/src/core/include/units/bits/expression_template.h @@ -502,12 +502,12 @@ inline constexpr bool expr_projectable_impl, Proj> = (... && ex template typename Proj> concept expr_projectable = requires { - typename T::_num_; - typename T::_den_; - requires type_list_size + type_list_size > 0; - requires expr_projectable_impl; - requires expr_projectable_impl; - }; + typename T::_num_; + typename T::_den_; + requires type_list_size + type_list_size > 0; + requires expr_projectable_impl; + requires expr_projectable_impl; +}; template typename Proj, template typename To, typename OneType, template typename Pred, expr_type_projectable... Nums, diff --git a/src/core/include/units/customization_points.h b/src/core/include/units/customization_points.h index 3dcfbacc..889e8176 100644 --- a/src/core/include/units/customization_points.h +++ b/src/core/include/units/customization_points.h @@ -69,20 +69,20 @@ struct quantity_values { static constexpr Rep min() noexcept requires requires { - { - std::numeric_limits::lowest() - } -> std::same_as; - } + { + std::numeric_limits::lowest() + } -> std::same_as; + } { return std::numeric_limits::lowest(); } static constexpr Rep max() noexcept requires requires { - { - std::numeric_limits::max() - } -> std::same_as; - } + { + std::numeric_limits::max() + } -> std::same_as; + } { return std::numeric_limits::max(); } diff --git a/src/core/include/units/dimension.h b/src/core/include/units/dimension.h index 546d3067..9e292a9f 100644 --- a/src/core/include/units/dimension.h +++ b/src/core/include/units/dimension.h @@ -126,11 +126,9 @@ template inline constexpr bool is_dimension_one = false; template -inline constexpr bool is_power_of_dim = - requires { - requires is_specialization_of_power && - (BaseDimension || is_dimension_one); - }; +inline constexpr bool is_power_of_dim = requires { + requires is_specialization_of_power && (BaseDimension || is_dimension_one); +}; template inline constexpr bool is_per_of_dims = false; diff --git a/src/core/include/units/quantity.h b/src/core/include/units/quantity.h index 8721c2cc..6ce49556 100644 --- a/src/core/include/units/quantity.h +++ b/src/core/include/units/quantity.h @@ -85,16 +85,16 @@ concept have_quantity_for_ = Quantity && (!Quantity) && quantity_value_for template concept QuantityLike = requires(T q) { - quantity_like_traits::dimension; - quantity_like_traits::unit; - typename quantity_like_traits::rep; - requires Dimension::dimension)>>; - requires Unit::unit)>>; - requires Representation::rep>; - { - quantity_like_traits::number(q) - } -> std::convertible_to::rep>; - }; + quantity_like_traits::dimension; + quantity_like_traits::unit; + typename quantity_like_traits::rep; + requires Dimension::dimension)>>; + requires Unit::unit)>>; + requires Representation::rep>; + { + quantity_like_traits::number(q) + } -> std::convertible_to::rep>; +}; template using quantity_like_type = quantity::dimension, quantity_like_traits::unit>{}, @@ -151,7 +151,7 @@ public: quantity(quantity&&) = default; template - requires(safe_convertible_to_, rep>) + requires safe_convertible_to_, rep> constexpr explicit(!detail::quantity_one) quantity(Value&& v) : number_(std::forward(v)) { } @@ -162,7 +162,7 @@ public: } template - requires(quantity_convertible_to_, quantity>) + requires quantity_convertible_to_, quantity> constexpr explicit quantity(const Q& q) : quantity(quantity_like_type(quantity_like_traits::number(q))) { } @@ -186,17 +186,17 @@ public: // member unary operators [[nodiscard]] constexpr Quantity auto operator+() const requires requires(rep v) { - { - +v - } -> std::common_with; - } + { + +v + } -> std::common_with; + } { using ret = quantity; return ret(+number()); } [[nodiscard]] constexpr Quantity auto operator-() const - requires(std::regular_invocable, rep>) + requires std::regular_invocable, rep> { using ret = quantity; return ret(-number()); @@ -204,10 +204,10 @@ public: constexpr quantity& operator++() requires requires(rep v) { - { - ++v - } -> std::same_as; - } + { + ++v + } -> std::same_as; + } { ++number_; return *this; @@ -215,20 +215,20 @@ public: [[nodiscard]] constexpr quantity operator++(int) requires requires(rep v) { - { - v++ - } -> std::same_as; - } + { + v++ + } -> std::same_as; + } { return quantity(number_++); } constexpr quantity& operator--() requires requires(rep v) { - { - --v - } -> std::same_as; - } + { + --v + } -> std::same_as; + } { --number_; return *this; @@ -236,20 +236,20 @@ public: [[nodiscard]] constexpr quantity operator--(int) requires requires(rep v) { - { - v-- - } -> std::same_as; - } + { + v-- + } -> std::same_as; + } { return quantity(number_--); } constexpr quantity& operator+=(const quantity& q) requires requires(rep a, rep b) { - { - a += b - } -> std::same_as; - } + { + a += b + } -> std::same_as; + } { number_ += q.number(); return *this; @@ -257,10 +257,10 @@ public: constexpr quantity& operator-=(const quantity& q) requires requires(rep a, rep b) { - { - a -= b - } -> std::same_as; - } + { + a -= b + } -> std::same_as; + } { number_ -= q.number(); return *this; @@ -269,10 +269,10 @@ public: template constexpr quantity& operator*=(const Rep2& rhs) requires requires(rep a, const Rep2 b) { - { - a *= b - } -> std::same_as; - } + { + a *= b + } -> std::same_as; + } { number_ *= rhs; return *this; @@ -280,10 +280,10 @@ public: template constexpr quantity& operator*=(const Q& rhs) requires requires(rep a, const typename Q::rep b) { - { - a *= b - } -> std::same_as; - } + { + a *= b + } -> std::same_as; + } { number_ *= rhs.number(); return *this; @@ -292,10 +292,10 @@ public: template constexpr quantity& operator/=(const Rep2& rhs) requires requires(rep a, const Rep2 b) { - { - a /= b - } -> std::same_as; - } + { + a /= b + } -> std::same_as; + } { gsl_ExpectsAudit(rhs != quantity_values::zero()); number_ /= rhs; @@ -304,10 +304,10 @@ public: template constexpr quantity& operator/=(const Q& rhs) requires requires(rep a, const typename Q::rep b) { - { - a /= b - } -> std::same_as; - } + { + a /= b + } -> std::same_as; + } { gsl_ExpectsAudit(rhs.number() != quantity_values::zero()); number_ /= rhs.number(); @@ -317,10 +317,10 @@ public: template constexpr quantity& operator%=(const Rep2& rhs) requires(!floating_point_) && (!floating_point_) && requires(rep a, const Rep2 b) { - { - a %= b - } -> std::same_as; - } + { + a %= b + } -> std::same_as; + } { gsl_ExpectsAudit(rhs != quantity_values::zero()); number_ %= rhs; @@ -330,10 +330,10 @@ public: template constexpr quantity& operator%=(const Q& rhs) requires(!floating_point_) && (!floating_point_) && requires(rep a, const typename Q::rep b) { - { - a %= b - } -> std::same_as; - } + { + a %= b + } -> std::same_as; + } { gsl_ExpectsAudit(rhs.number() != quantity_values::zero()); number_ %= rhs.number(); @@ -342,10 +342,10 @@ public: constexpr quantity& operator%=(const quantity& q) requires(!floating_point_) && requires(rep a, rep b) { - { - a %= b - } -> std::same_as; - } + { + a %= b + } -> std::same_as; + } { gsl_ExpectsAudit(q.number() != quantity_values::zero()); number_ %= q.number(); @@ -357,20 +357,20 @@ public: template [[nodiscard]] friend constexpr Quantity auto operator+(const quantity& lhs, const Value& rhs) requires requires { // TODO: Simplify when Clang catches up. - requires !Quantity; - requires unit == ::units::one; - requires invoke_result_convertible_to_, rep, Value>; - } + requires !Quantity; + requires unit == ::units::one; + requires invoke_result_convertible_to_, rep, Value>; + } { return ::units::quantity(lhs.number() + rhs); } template [[nodiscard]] friend constexpr Quantity auto operator+(const Value& lhs, const quantity& rhs) requires requires { // TODO: Simplify when Clang catches up. - requires !Quantity; - requires unit == ::units::one; - requires invoke_result_convertible_to_, Value, rep>; - } + requires !Quantity; + requires unit == ::units::one; + requires invoke_result_convertible_to_, Value, rep>; + } { return ::units::quantity(lhs + rhs.number()); } @@ -378,26 +378,26 @@ public: template [[nodiscard]] friend constexpr Quantity auto operator-(const quantity& lhs, const Value& rhs) requires requires { // TODO: Simplify when Clang catches up. - requires !Quantity; - requires unit == ::units::one; - requires invoke_result_convertible_to_, rep, Value>; - } + requires !Quantity; + requires unit == ::units::one; + requires invoke_result_convertible_to_, rep, Value>; + } { return ::units::quantity(lhs.number() - rhs); } template [[nodiscard]] friend constexpr Quantity auto operator-(const Value& lhs, const quantity& rhs) requires requires { // TODO: Simplify when Clang catches up. - requires !Quantity; - requires unit == ::units::one; - requires invoke_result_convertible_to_, Value, rep>; - } + requires !Quantity; + requires unit == ::units::one; + requires invoke_result_convertible_to_, Value, rep>; + } { return ::units::quantity(lhs - rhs.number()); } template - requires(invoke_result_convertible_to_, rep, const Value&>) + requires invoke_result_convertible_to_, rep, const Value&> [[nodiscard]] friend constexpr Quantity auto operator*(const quantity& q, const Value& v) { using ret = quantity, rep, Value>>; @@ -405,7 +405,7 @@ public: } template - requires(invoke_result_convertible_to_, const Value&, rep>) + requires invoke_result_convertible_to_, const Value&, rep> [[nodiscard]] friend constexpr Quantity auto operator*(const Value& v, const quantity& q) { using ret = quantity, Value, rep>>; @@ -413,7 +413,7 @@ public: } template - requires(!Quantity) && (invoke_result_convertible_to_, rep, const Value&>) + requires(!Quantity) && invoke_result_convertible_to_, rep, const Value&> [[nodiscard]] friend constexpr Quantity auto operator/(const quantity& q, const Value& v) { gsl_ExpectsAudit(v != quantity_values::zero()); @@ -422,15 +422,15 @@ public: } template - requires(!Quantity) && (invoke_result_convertible_to_, const Value&, rep>) + requires(!Quantity) && invoke_result_convertible_to_, const Value&, rep> [[nodiscard]] friend constexpr Quantity auto operator/(const Value& v, const quantity& q) { return detail::make_quantity(v / q.number()); } template - requires(!Quantity) && (!floating_point_) && (!floating_point_) && - (invoke_result_convertible_to_, rep, const Value&>) + requires(!Quantity) && (!floating_point_) && + (!floating_point_) && invoke_result_convertible_to_, rep, const Value&> [[nodiscard]] friend constexpr Quantity auto operator%(const quantity& q, const Value& v) { gsl_ExpectsAudit(v != quantity_values::zero()); @@ -439,7 +439,7 @@ public: } [[nodiscard]] friend constexpr Quantity auto operator%(const quantity& lhs, const quantity& rhs) - requires(!floating_point_) && (invoke_result_convertible_to_, rep, rep>) + requires(!floating_point_) && invoke_result_convertible_to_, rep, rep> { gsl_ExpectsAudit(rhs.number() != quantity_values::zero()); using ret = quantity, rep, rep>>; @@ -497,14 +497,14 @@ template } template - requires(quantity_value_for_, typename Q1::rep, typename Q2::rep>) + requires quantity_value_for_, typename Q1::rep, typename Q2::rep> [[nodiscard]] constexpr Quantity auto operator*(const Q1& lhs, const Q2& rhs) { return detail::make_quantity(lhs.number() * rhs.number()); } template - requires(quantity_value_for_, typename Q1::rep, typename Q2::rep>) + requires quantity_value_for_, typename Q1::rep, typename Q2::rep> [[nodiscard]] constexpr Quantity auto operator/(const Q1& lhs, const Q2& rhs) { gsl_ExpectsAudit(rhs.number() != quantity_values::zero()); @@ -547,11 +547,11 @@ namespace std { template requires requires { - { - units::detail::common_reference(Q1::reference, Q2::reference) - } -> units::Reference; - typename common_type_t; - } + { + units::detail::common_reference(Q1::reference, Q2::reference) + } -> units::Reference; + typename common_type_t; + } struct common_type { public: using type = units::quantity Dimension; - { - common_unit(r1.unit, r2.unit) - } -> Unit; - } + { + common_dimension(r1.dimension, r2.dimension) + } -> Dimension; + { + common_unit(r1.unit, r2.unit) + } -> Unit; + } { return reference{}; }