refactor: op[U] for quantity and quantity_point replaced with .in(U)

Resolves #469
This commit is contained in:
Mateusz Pusz committed 2023-08-23 16:46:15 +02:00
1 parent d8f646a1e4
commit ae92b49775
24 files changed
+113 -113

No files matched your search

+11 -11
View File
@@ -576,21 +576,21 @@ static_assert(is_of_type<(ground_level + isq::height(short(42) * m)).point_for(m
// converting to a different unit
///////////////////////////////////
static_assert((mean_sea_level + 2. * km)[km].quantity_from_origin().number() == 2.);
static_assert((mean_sea_level + 2. * km)[m].quantity_from_origin().number() == 2000.);
static_assert((mean_sea_level + 2000. * m)[km].quantity_from_origin().number() == 2.);
static_assert((ground_level + 2. * km)[km].quantity_from_origin().number() == 2.);
static_assert((ground_level + 2. * km)[m].quantity_from_origin().number() == 2000.);
static_assert((ground_level + 2000. * m)[km].quantity_from_origin().number() == 2.);
static_assert((tower_peak + 2. * km)[km].quantity_from_origin().number() == 2.);
static_assert((tower_peak + 2. * km)[m].quantity_from_origin().number() == 2000.);
static_assert((tower_peak + 2000. * m)[km].quantity_from_origin().number() == 2.);
static_assert((mean_sea_level + 2. * km).in(km).quantity_from_origin().number() == 2.);
static_assert((mean_sea_level + 2. * km).in(m).quantity_from_origin().number() == 2000.);
static_assert((mean_sea_level + 2000. * m).in(km).quantity_from_origin().number() == 2.);
static_assert((ground_level + 2. * km).in(km).quantity_from_origin().number() == 2.);
static_assert((ground_level + 2. * km).in(m).quantity_from_origin().number() == 2000.);
static_assert((ground_level + 2000. * m).in(km).quantity_from_origin().number() == 2.);
static_assert((tower_peak + 2. * km).in(km).quantity_from_origin().number() == 2.);
static_assert((tower_peak + 2. * km).in(m).quantity_from_origin().number() == 2000.);
static_assert((tower_peak + 2000. * m).in(km).quantity_from_origin().number() == 2.);
#if MP_UNITS_COMP_GCC != 10 || MP_UNITS_COMP_GCC_MINOR > 2
template<template<auto, auto, typename> typename QP>
concept invalid_unit_conversion = requires {
requires !requires { QP<isq::height[m], mean_sea_level, int>(2000 * m)[km]; }; // truncating conversion
requires !requires { QP<isq::height[m], mean_sea_level, int>(2 * m)[s]; }; // invalid unit
requires !requires { QP<isq::height[m], mean_sea_level, int>(2000 * m).in(km); }; // truncating conversion
requires !requires { QP<isq::height[m], mean_sea_level, int>(2 * m).in(s); }; // invalid unit
};
static_assert(invalid_unit_conversion<quantity_point>);
#endif