mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-04 20:54:28 +02:00
feat: support for convertibility of point origins added
This commit is contained in:
@@ -37,9 +37,9 @@
|
||||
|
||||
namespace geographic {
|
||||
|
||||
// clang-format off
|
||||
inline constexpr struct mean_sea_level : mp_units::absolute_point_origin<mp_units::isq::altitude> {} mean_sea_level;
|
||||
// clang-format on
|
||||
inline constexpr struct mean_sea_level : mp_units::absolute_point_origin<mp_units::isq::altitude> {
|
||||
using mp_units::absolute_point_origin<mp_units::isq::altitude>::absolute_point_origin;
|
||||
} mean_sea_level;
|
||||
|
||||
using msl_altitude = mp_units::quantity_point<mp_units::isq::altitude[mp_units::si::metre], mean_sea_level>;
|
||||
|
||||
|
@@ -38,6 +38,7 @@ enum class earth_gravity_model { egm84_15, egm95_5, egm2008_1 };
|
||||
template<earth_gravity_model M>
|
||||
struct height_above_ellipsoid_t : absolute_point_origin<isq::altitude> {
|
||||
static constexpr earth_gravity_model egm = M;
|
||||
using absolute_point_origin<isq::altitude>::absolute_point_origin;
|
||||
};
|
||||
template<earth_gravity_model M>
|
||||
inline constexpr height_above_ellipsoid_t<M> height_above_ellipsoid;
|
||||
|
@@ -98,7 +98,7 @@ concept QuantityPointOf =
|
||||
QuantityPoint<QP> &&
|
||||
(ReferenceOf<std::remove_const_t<decltype(QP::reference)>, V> ||
|
||||
(PointOrigin<std::remove_const_t<decltype(V)>> &&
|
||||
std::same_as<std::remove_const_t<decltype(QP::absolute_point_origin)>, std::remove_const_t<decltype(V)>>));
|
||||
std::convertible_to<std::remove_const_t<decltype(QP::absolute_point_origin)>, std::remove_const_t<decltype(V)>>));
|
||||
|
||||
/**
|
||||
* @brief A concept matching all external quantity point like types
|
||||
|
@@ -1,4 +1,3 @@
|
||||
|
||||
// The MIT License (MIT)
|
||||
//
|
||||
// Copyright (c) 2018 Mateusz Pusz
|
||||
@@ -33,6 +32,12 @@ namespace mp_units {
|
||||
template<QuantitySpec auto Q>
|
||||
struct absolute_point_origin {
|
||||
static constexpr QuantitySpec auto quantity_spec = Q;
|
||||
absolute_point_origin() = default;
|
||||
template<QuantitySpec auto Q2>
|
||||
requires(implicitly_convertible(Q2, Q))
|
||||
consteval absolute_point_origin(absolute_point_origin<Q2>)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
namespace detail {
|
||||
|
Reference in New Issue
Block a user