diff --git a/src/core/include/mp-units/bits/quantity_point_concepts.h b/src/core/include/mp-units/bits/quantity_point_concepts.h index 184864c9..a27af90b 100644 --- a/src/core/include/mp-units/bits/quantity_point_concepts.h +++ b/src/core/include/mp-units/bits/quantity_point_concepts.h @@ -37,6 +37,12 @@ namespace detail { template inline constexpr bool is_quantity_point = false; +template +inline constexpr bool is_specialization_of_absolute_point_origin = false; + +template +inline constexpr bool is_specialization_of_absolute_point_origin> = true; + template void to_base_specialization_of_absolute_point_origin(const volatile absolute_point_origin*); @@ -102,7 +108,11 @@ concept QuantityPointOf = QuantityPoint && (ReferenceOf, V> || (PointOrigin> && - std::convertible_to, std::remove_const_t>)); + (std::same_as, std::remove_const_t> || + (detail::is_specialization_of_absolute_point_origin> && + detail::is_specialization_of_absolute_point_origin> && + implicitly_convertible(QP::absolute_point_origin.quantity_spec, V.quantity_spec) && + !detail::DerivedFromQuantityKindSpecOf)))); /** * @brief A concept matching all external quantity point like types