quantities.cpp serif/dimensions/quantities.hpp serif/dimensions/type_alias.hpp serif/dimensions/partial.hpp type_traits #include"serif/dimensions/quantities.hpp" #include"serif/dimensions/type_alias.hpp" #include"serif/dimensions/partial.hpp" #include<type_traits> usingnamespaceserif::dimensions; static_assert(PhysicalQuantityType<Mass>); static_assert(ThermodynamicQuantityType<MassDensity>); static_assert(!ThermodynamicQuantityType<Mass>); static_assert(QuantityValueType<MassValue>); static_assert(std::same_as<QuantityOfT<MassValue>,Mass>); static_assert(std::constructible_from<MassValue,double>); static_assert(!std::convertible_to<double,MassValue>); static_assert(!std::convertible_to<MassValue,double>); static_assert(!std::constructible_from<MassValue,LengthValue>); static_assert((MassValue{2.0}+MassValue{0.5}).value()==2.5); static_assert((MassValue{2.0}-MassValue{0.5}).value()==1.5); static_assert((3.0*MassValue{2.0}).value()==6.0); static_assert((MassValue{2.0}/4.0).value()==0.5); static_assert(!std::convertible_to<double,PartialDerivative<Pressure,MassDensity>>);