deduced_unit fixed + unit test for mass unit added

This commit is contained in:
Mateusz Pusz
2020-02-10 20:35:32 +01:00
parent 1f46ca5f0c
commit 037503cbc6
3 changed files with 16 additions and 3 deletions

View File

@@ -61,7 +61,8 @@ struct derived_ratio<exp_list<>, Us...> {
template<typename E, typename... ERest, Unit U, Unit... URest>
struct derived_ratio<exp_list<E, ERest...>, U, URest...> {
using rest_ratio = derived_ratio<exp_list<ERest...>, URest...>::ratio;
using ratio = ratio_op<rest_ratio, E::num, E::den, typename U::ratio>::ratio;
using unit_ratio = ratio_op<rest_ratio, E::num, E::den, typename U::ratio>::ratio;
using ratio = ratio_divide<unit_ratio, typename dimension_unit<typename E::dimension>::ratio>;
};
template<DerivedDimension D, Unit... Us>

View File

@@ -28,8 +28,8 @@
namespace units::si {
struct kilogram : named_unit<kilogram, "kg", no_prefix> {};
struct gram : named_scaled_unit<gram, "g", prefix, ratio<1, 1'000>, kilogram> {};
struct gram : named_unit<gram, "g", prefix> {};
struct kilogram : prefixed_unit<kilogram, kilo, gram> {};
struct tonne : named_scaled_unit<tonne, "t", prefix, ratio<1'000>, kilogram> {};
struct dalton : named_scaled_unit<dalton, "Da", no_prefix, ratio<16'605'390'666'050, 10'000'000'000'000, -27>, kilogram> {};

View File

@@ -20,7 +20,9 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
#include <units/physical/si/mass.h>
#include <units/physical/si/voltage.h>
#include <units/physical/si/time.h>
#include <units/physical/si/frequency.h>
#include <units/math.h>
@@ -54,3 +56,13 @@ static_assert(std::is_same_v<decltype(pow<2>(amplitude_spectral_density<volt_per
static_assert(std::is_same_v<decltype(sqrt(power_spectral_density<sq_volt_per_hertz>(16))), decltype(amplitude_spectral_density<volt_per_sqrt_hertz>(4))>);
}
namespace {
struct kilogram_per_second : unit<kilogram_per_second> {};
struct dim_mass_rate : derived_dimension<dim_mass_rate, kilogram_per_second, units::exp<si::dim_mass, 1>, units::exp<si::dim_time, -1>> {};
struct kilogram_per_hour : deduced_unit<kilogram_per_hour, dim_mass_rate, si::kilogram, si::hour> {};
constexpr auto a = 1kg / 1h;
static_assert(std::is_same_v<decltype(a)::unit, kilogram_per_hour>);
}