mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-01 03:14:29 +02:00
feat: a support to define ISQ derived dimensions in terms of different number or order of components
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
- feat: `modulation_rate` support added (thanks [@go2sh](https://github.com/go2sh))
|
||||
- feat: SI prefixes for `isq::iec80000` support added (thanks [@go2sh](https://github.com/go2sh))
|
||||
- feat: a possibility to disable quantity UDLs support with `UNITS_NO_LITERALS` preprocessor define
|
||||
- feat: a support to define ISQ derived dimensions in terms of different number or order of components
|
||||
- perf: preconditions check do not influence the runtime performance of a Release build
|
||||
- perf: `quantity_cast()` generates less assembly instructions
|
||||
- perf: temporary string creation removed from `quantity::op<<()`
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_absorbed_dose;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_energy> E, DimensionOfT<dim_mass> M>
|
||||
struct dim_absorbed_dose : derived_dimension<Child, U, exponent<E, 1>, exponent<M, -1>> {};
|
||||
struct dim_absorbed_dose<Child, U, E, M> : derived_dimension<Child, U, exponent<E, 1>, exponent<M, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept AbsorbedDose = QuantityOfT<T, dim_absorbed_dose>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_acceleration;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_length> L, DimensionOfT<dim_time> T>
|
||||
struct dim_acceleration : derived_dimension<Child, U, exponent<L, 1>, exponent<T, -2>> {};
|
||||
struct dim_acceleration<Child, U, L, T> : derived_dimension<Child, U, exponent<L, 1>, exponent<T, -2>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Acceleration = QuantityOfT<T, dim_acceleration>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_angular_velocity;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_angle> A, DimensionOfT<dim_time> T>
|
||||
struct dim_angular_velocity : derived_dimension<Child, U, exponent<A, 1>, exponent<T, -1>> {};
|
||||
struct dim_angular_velocity<Child, U, A, T> : derived_dimension<Child, U, exponent<A, 1>, exponent<T, -1>> {};
|
||||
|
||||
template <typename T>
|
||||
concept AngularVelocity = QuantityOfT<T, dim_angular_velocity>;
|
||||
|
@@ -27,8 +27,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_area;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_length> L>
|
||||
struct dim_area : derived_dimension<Child, U, exponent<L, 2>> {};
|
||||
struct dim_area<Child, U, L> : derived_dimension<Child, U, exponent<L, 2>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Area = QuantityOfT<T, dim_area>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_capacitance;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_electric_charge> C, DimensionOfT<dim_voltage> V>
|
||||
struct dim_capacitance : derived_dimension<Child, U, exponent<C, 1>, exponent<V, -1>> {};
|
||||
struct dim_capacitance<Child, U, C, V> : derived_dimension<Child, U, exponent<C, 1>, exponent<V, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Capacitance = QuantityOfT<T, dim_capacitance>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_catalytic_activity;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_time> T, DimensionOfT<dim_amount_of_substance> M>
|
||||
struct dim_catalytic_activity : derived_dimension<Child, U, exponent<T, -1>, exponent<M, 1>> {};
|
||||
struct dim_catalytic_activity<Child, U, T, M> : derived_dimension<Child, U, exponent<T, -1>, exponent<M, 1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept CatalyticActivity = QuantityOfT<T, dim_catalytic_activity>;
|
||||
|
@@ -28,11 +28,17 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_electric_charge> Q, DimensionOfT<dim_length> L>
|
||||
struct dim_charge_density : derived_dimension<Child, U, exponent<Q, 1>, exponent<L, -3>> {};
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_charge_density;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_electric_charge> Q, DimensionOfT<dim_length> L>
|
||||
struct dim_surface_charge_density : derived_dimension<Child, U, exponent<Q, 1>, exponent<L, -2>> {};
|
||||
struct dim_charge_density<Child, U, Q, L> : derived_dimension<Child, U, exponent<Q, 1>, exponent<L, -3>> {};
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_surface_charge_density;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_electric_charge> Q, DimensionOfT<dim_length> L>
|
||||
struct dim_surface_charge_density<Child, U, Q, L> : derived_dimension<Child, U, exponent<Q, 1>, exponent<L, -2>> {};
|
||||
|
||||
template<typename T>
|
||||
concept ChargeDensity = QuantityOfT<T, dim_charge_density>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_concentration;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_amount_of_substance> M, DimensionOfT<dim_length> L>
|
||||
struct dim_concentration : derived_dimension<Child, U, exponent<M, 1>, exponent<L, -3>> {};
|
||||
struct dim_concentration<Child, U, M, L> : derived_dimension<Child, U, exponent<M, 1>, exponent<L, -3>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Concentration = QuantityOfT<T, dim_concentration>;
|
||||
|
@@ -27,8 +27,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_conductance;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_resistance> R>
|
||||
struct dim_conductance : derived_dimension<Child, U, exponent<R, -1>> {};
|
||||
struct dim_conductance<Child, U, R> : derived_dimension<Child, U, exponent<R, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Conductance = QuantityOfT<T, dim_conductance>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_current_density;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_electric_current> I, DimensionOfT<dim_length> L>
|
||||
struct dim_current_density : derived_dimension<Child, U, exponent<I, 1>, exponent<L, -2>> {};
|
||||
struct dim_current_density<Child, U, I, L> : derived_dimension<Child, U, exponent<I, 1>, exponent<L, -2>> {};
|
||||
|
||||
template<typename T>
|
||||
concept CurrentDensity = QuantityOfT<T, dim_current_density>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_density;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_mass> M, DimensionOfT<dim_length> L>
|
||||
struct dim_density : derived_dimension<Child, U, exponent<M, 1>, exponent<L, -3>> {};
|
||||
struct dim_density<Child, U, M, L> : derived_dimension<Child, U, exponent<M, 1>, exponent<L, -3>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Density = QuantityOfT<T, dim_density>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_dynamic_viscosity;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_pressure> P, DimensionOfT<dim_time> T>
|
||||
struct dim_dynamic_viscosity : derived_dimension<Child, U, exponent<P, 1>, exponent<T, 1>> {};
|
||||
struct dim_dynamic_viscosity<Child, U, P, T> : derived_dimension<Child, U, exponent<P, 1>, exponent<T, 1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept DynamicViscosity = QuantityOfT<T, dim_dynamic_viscosity>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_electric_charge;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_time> T, DimensionOfT<dim_electric_current> C>
|
||||
struct dim_electric_charge : derived_dimension<Child, U, exponent<T, 1>, exponent<C, 1>> {};
|
||||
struct dim_electric_charge<Child, U, T, C> : derived_dimension<Child, U, exponent<T, 1>, exponent<C, 1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept ElectricCharge = QuantityOfT<T, dim_electric_charge>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_electric_field_strength;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_voltage> V, DimensionOfT<dim_length> L>
|
||||
struct dim_electric_field_strength : derived_dimension<Child, U, exponent<V, 1>, exponent<L, -1>> {};
|
||||
struct dim_electric_field_strength<Child, U, V, L> : derived_dimension<Child, U, exponent<V, 1>, exponent<L, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept ElectricFieldStrength = QuantityOfT<T, dim_electric_field_strength>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_energy_density;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_energy> E, DimensionOfT<dim_volume> V>
|
||||
struct dim_energy_density : derived_dimension<Child, U, exponent<E, 1>, exponent<V, -1>> {};
|
||||
struct dim_energy_density<Child, U, E, V> : derived_dimension<Child, U, exponent<E, 1>, exponent<V, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept EnergyDensity = QuantityOfT<T, dim_energy_density>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_force;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_mass> M, DimensionOfT<dim_acceleration> A>
|
||||
struct dim_force : derived_dimension<Child, U, exponent<M, 1>, exponent<A, 1>> {};
|
||||
struct dim_force<Child, U, M, A> : derived_dimension<Child, U, exponent<M, 1>, exponent<A, 1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Force = QuantityOfT<T, dim_force>;
|
||||
|
@@ -27,8 +27,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_frequency;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_time> T>
|
||||
struct dim_frequency : derived_dimension<Child, U, exponent<T, -1>> {};
|
||||
struct dim_frequency<Child, U, T> : derived_dimension<Child, U, exponent<T, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Frequency = QuantityOfT<T, dim_frequency>;
|
||||
|
@@ -30,14 +30,23 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_heat_capacity;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_energy> E, DimensionOfT<dim_thermodynamic_temperature> T>
|
||||
struct dim_heat_capacity : derived_dimension<Child, U, exponent<E, 1>, exponent<T, -1>> {};
|
||||
struct dim_heat_capacity<Child, U, E, T> : derived_dimension<Child, U, exponent<E, 1>, exponent<T, -1>> {};
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_specific_heat_capacity;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_heat_capacity> C, DimensionOfT<dim_mass> M>
|
||||
struct dim_specific_heat_capacity : derived_dimension<Child, U, exponent<C, 1>, exponent<M, -1>> {};
|
||||
struct dim_specific_heat_capacity<Child, U, C, M> : derived_dimension<Child, U, exponent<C, 1>, exponent<M, -1>> {};
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_molar_heat_capacity;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_heat_capacity> C, DimensionOfT<dim_amount_of_substance> M>
|
||||
struct dim_molar_heat_capacity : derived_dimension<Child, U, exponent<C, 1>, exponent<M, -1>> {};
|
||||
struct dim_molar_heat_capacity<Child, U, C, M> : derived_dimension<Child, U, exponent<C, 1>, exponent<M, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept HeatCapacity = QuantityOfT<T, dim_heat_capacity>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_inductance;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_magnetic_flux> F, DimensionOfT<dim_electric_current> I>
|
||||
struct dim_inductance : derived_dimension<Child, U, exponent<F, 1>, exponent<I, -1>> {};
|
||||
struct dim_inductance<Child, U, F, I> : derived_dimension<Child, U, exponent<F, 1>, exponent<I, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Inductance = QuantityOfT<T, dim_inductance>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_luminance;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_luminous_intensity> I, DimensionOfT<dim_length> L>
|
||||
struct dim_luminance : derived_dimension<Child, U, exponent<I, 1>, exponent<L, -2>> {};
|
||||
struct dim_luminance<Child, U, I, L> : derived_dimension<Child, U, exponent<I, 1>, exponent<L, -2>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Luminance = QuantityOfT<T, dim_luminance>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_magnetic_flux;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_magnetic_induction> B, DimensionOfT<dim_area> A>
|
||||
struct dim_magnetic_flux : derived_dimension<Child, U, exponent<B, 1>, exponent<A, 1>> {};
|
||||
struct dim_magnetic_flux<Child, U, B, A> : derived_dimension<Child, U, exponent<B, 1>, exponent<A, 1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept MagneticFlux = QuantityOfT<T, dim_magnetic_flux>;
|
||||
|
@@ -29,8 +29,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template <typename Child, Unit U, typename...>
|
||||
struct dim_magnetic_induction;
|
||||
|
||||
template <typename Child, Unit U, DimensionOfT<dim_voltage> V, DimensionOfT<dim_time> T, DimensionOfT<dim_length> L>
|
||||
struct dim_magnetic_induction : derived_dimension<Child, U, exponent<V, 1>, exponent<T, 1>, exponent<L, -2>> {};
|
||||
struct dim_magnetic_induction<Child, U, V, T, L> : derived_dimension<Child, U, exponent<V, 1>, exponent<T, 1>, exponent<L, -2>> {};
|
||||
|
||||
template<typename T>
|
||||
concept MagneticInduction = QuantityOfT<T, dim_magnetic_induction>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_molar_energy;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_energy> E, DimensionOfT<dim_amount_of_substance> M>
|
||||
struct dim_molar_energy : derived_dimension<Child, U, exponent<E, 1>, exponent<M, -1>> {};
|
||||
struct dim_molar_energy<Child, U, E, M> : derived_dimension<Child, U, exponent<E, 1>, exponent<M, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept MolarEnergy = QuantityOfT<T, dim_molar_energy>;
|
||||
|
@@ -27,8 +27,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_momentum;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_mass> M, DimensionOfT<dim_speed> V>
|
||||
struct dim_momentum : derived_dimension<Child, U, exponent<M, 1>, exponent<V, 1>> {};
|
||||
struct dim_momentum<Child, U, M, V> : derived_dimension<Child, U, exponent<M, 1>, exponent<V, 1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Momentum = QuantityOfT<T, dim_momentum>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_permeability;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_inductance> H, DimensionOfT<dim_length> L>
|
||||
struct dim_permeability : derived_dimension<Child, U, exponent<H, 1>, exponent<L, -1>> {};
|
||||
struct dim_permeability<Child, U, H, L> : derived_dimension<Child, U, exponent<H, 1>, exponent<L, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Permeability = QuantityOfT<T, dim_permeability>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_permittivity;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_capacitance> C, DimensionOfT<dim_length> L>
|
||||
struct dim_permittivity : derived_dimension<Child, U, exponent<C, 1>, exponent<L, -1>> {};
|
||||
struct dim_permittivity<Child, U, C, L> : derived_dimension<Child, U, exponent<C, 1>, exponent<L, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Permittivity = QuantityOfT<T, dim_permittivity>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_pressure;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_force> F, DimensionOfT<dim_area> A>
|
||||
struct dim_pressure : derived_dimension<Child, U, exponent<F, 1>, exponent<A, -1>> {};
|
||||
struct dim_pressure<Child, U, F, A> : derived_dimension<Child, U, exponent<F, 1>, exponent<A, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Pressure = QuantityOfT<T, dim_pressure>;
|
||||
|
@@ -27,8 +27,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_radioactivity;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_time> T>
|
||||
struct dim_radioactivity : derived_dimension<Child, U, exponent<T, -1>> {};
|
||||
struct dim_radioactivity<Child, U, T> : derived_dimension<Child, U, exponent<T, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Radioactivity = QuantityOfT<T, dim_radioactivity>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template <typename Child, Unit U, typename...>
|
||||
struct dim_resistance;
|
||||
|
||||
template <typename Child, Unit U, DimensionOfT<dim_voltage> V, DimensionOfT<dim_electric_current> C>
|
||||
struct dim_resistance : derived_dimension<Child,U, exponent<V, 1>, exponent<C, -1>> {};
|
||||
struct dim_resistance<Child, U, V, C> : derived_dimension<Child,U, exponent<V, 1>, exponent<C, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Resistance = QuantityOfT<T, dim_resistance>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_speed;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_length> L, DimensionOfT<dim_time> T>
|
||||
struct dim_speed : derived_dimension<Child, U, exponent<L, 1>, exponent<T, -1>> {};
|
||||
struct dim_speed<Child, U, L, T> : derived_dimension<Child, U, exponent<L, 1>, exponent<T, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Speed = QuantityOfT<T, dim_speed>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_surface_tension;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_force> F, DimensionOfT<dim_length> L>
|
||||
struct dim_surface_tension : derived_dimension<Child, U, exponent<F, 1>, exponent<L, -1>> {};
|
||||
struct dim_surface_tension<Child, U, F, L> : derived_dimension<Child, U, exponent<F, 1>, exponent<L, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept SurfaceTension = QuantityOfT<T, dim_surface_tension>;
|
||||
|
@@ -29,8 +29,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_thermal_conductivity;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_power> P, DimensionOfT<dim_length> L, DimensionOfT<dim_thermodynamic_temperature> T>
|
||||
struct dim_thermal_conductivity : derived_dimension<Child, U, exponent<P, 1>, exponent<L, -1>, exponent<T, -1>> {};
|
||||
struct dim_thermal_conductivity<Child, U, P, L, T> : derived_dimension<Child, U, exponent<P, 1>, exponent<L, -1>, exponent<T, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept ThermalConductivity = QuantityOfT<T, dim_thermal_conductivity>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_torque;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_force> F, DimensionOfT<dim_length> L, DimensionOfT<dim_angle> A>
|
||||
struct dim_torque : derived_dimension<Child, U, exponent<F, 1>, exponent<L, 1>, exponent<A, -1>> {};
|
||||
struct dim_torque<Child, U, F, L, A> : derived_dimension<Child, U, exponent<F, 1>, exponent<L, 1>, exponent<A, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Torque = QuantityOfT<T, dim_torque>;
|
||||
|
@@ -28,8 +28,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_voltage;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_power> P, DimensionOfT<dim_electric_current> C>
|
||||
struct dim_voltage : derived_dimension<Child, U, exponent<P, 1>, exponent<C, -1>> {};
|
||||
struct dim_voltage<Child, U, P, C> : derived_dimension<Child, U, exponent<P, 1>, exponent<C, -1>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Voltage = QuantityOfT<T, dim_voltage>;
|
||||
|
@@ -27,8 +27,11 @@
|
||||
|
||||
namespace units::isq {
|
||||
|
||||
template<typename Child, Unit U, typename...>
|
||||
struct dim_volume;
|
||||
|
||||
template<typename Child, Unit U, DimensionOfT<dim_length> L>
|
||||
struct dim_volume : derived_dimension<Child, U, exponent<L, 3>> {};
|
||||
struct dim_volume<Child, U, L> : derived_dimension<Child, U, exponent<L, 3>> {};
|
||||
|
||||
template<typename T>
|
||||
concept Volume = QuantityOfT<T, dim_volume>;
|
||||
|
Reference in New Issue
Block a user