|
| constexpr | quantity ()=default |
| | Constructs a zero quantity.
|
| |
| | quantity (const quantity &)=default |
| |
template<typename Rep2 >
requires std::convertible_to<const Rep2&, rep> && (treat_as_inexact_v<rep> || !treat_as_inexact_v<Rep2>) |
| constexpr | quantity (const Rep2 &r) |
| | Constructs from a tick count.
|
| |
template<typename Rep2 , typename Precision2 >
requires std::convertible_to<const Rep2&, rep> && detail::_lossless_conversion<Rep2, Precision2, rep, precision> && detail::_quantity_castable<quantity<Unit, Rep2, Precision2>, quantity> |
| constexpr | quantity (const quantity< Unit, Rep2, Precision2 > &q) |
| | Constructs from another quantity of the same unit with different representation or precision.
|
| |
template<typename Rep2 , typename Precision2 >
requires (!detail::_lossless_conversion<Rep2, Precision2, rep, precision> || !std::convertible_to<const Rep2&, rep>) && detail::_quantity_castable<quantity<Unit, Rep2, Precision2>, quantity> |
| constexpr | quantity (const quantity< Unit, Rep2, Precision2 > &q) |
| | Explicit constructor for lossy conversions.
|
| |
| | ~quantity ()=default |
| |
| quantity & | operator= (const quantity &)=default |
| |
| constexpr rep | count () const |
| | Returns the tick count.
|
| |
| constexpr quantity< Unit, typename std::common_type< rep >::type, precision > | operator+ () const |
| | Returns a copy of this quantity.
|
| |
| constexpr quantity< Unit, typename std::common_type< rep >::type, precision > | operator- () const |
| | Returns the negation of this quantity.
|
| |
| constexpr quantity & | operator++ () |
| |
| constexpr quantity | operator++ (int) |
| |
| constexpr quantity & | operator-- () |
| |
| constexpr quantity | operator-- (int) |
| |
| constexpr quantity & | operator+= (const quantity &q) |
| |
| constexpr quantity & | operator-= (const quantity &q) |
| |
| constexpr quantity & | operator*= (const rep &r) |
| |
| constexpr quantity & | operator/= (const rep &r) |
| |
| constexpr quantity & | operator%= (const rep &r) |
| |
| constexpr quantity & | operator%= (const quantity &q) |
| |
template<typename Unit, typename Rep, typename Precision>
class quanta::spatial::quantity< Unit, Rep, Precision >
A quantity of a spatial unit with a representation and precision.
Similar to std::chrono::duration, quantity represents an amount of some spatial unit (meters, square meters or cubic meters). The precision is expressed as a std::ratio of one base unit, so millimeters have precision std::milli, inches have precision std::ratio<127, 5000> (exactly 0.0254 m) and milliliters have precision std::micro (of one cubic meter).
Examples
auto run = 5_km;
auto sum = 100_mm + 5_cm;
auto ratio = 1_mi / 1_ft;
auto patch = 3_ft * 4_ft;
auto box = patch * 2_ft;
length< int64_t, std::milli > millimeters
Length with 1 mm precision.
length< int64_t, std::ratio< 381, 1250 > > feet
Length with 1 ft (12 in = 0.3048 m) precision.
constexpr scaled_t scaled
Selects the scaled form in to_string().
Lengths (and only lengths) have a nested period alias, equal to precision, matching std::chrono::duration::period. It gives a length the same shape as a duration, so it can be passed to generic code that expects a duration-like or distance-like type, such as quanta::frequency::frequency::wavelength<quanta::spatial::millimeters>(). Areas and volumes deliberately lack it, so such code rejects them.
- Template Parameters
-
Definition at line 231 of file spatial.hpp.
template<typename Unit , typename Rep , typename Precision >
template<typename Rep2 , typename Precision2 >
requires std::convertible_to<const Rep2&,
rep> && detail::_lossless_conversion<Rep2, Precision2,
rep,
precision> && detail::_quantity_castable<
quantity<Unit, Rep2, Precision2>,
quantity>
Constructs from another quantity of the same unit with different representation or precision.
Implicit when the conversion is lossless (the target rep is floating-point, or the target precision evenly divides the source precision and the source rep is not floating-point) and the source rep converts implicitly to the target rep. Any other conversion that the cast can perform is explicit (see below).
- Template Parameters
-
| Rep2 | Source representation type. |
| Precision2 | Source precision. |
- Parameters
-
Definition at line 280 of file spatial.hpp.
template<typename Unit , typename Rep , typename Precision >
template<typename Rep2 , typename Precision2 >
requires (!detail::_lossless_conversion<Rep2, Precision2,
rep,
precision> || !std::convertible_to<const Rep2&,
rep>) && detail::_quantity_castable<
quantity<Unit, Rep2, Precision2>,
quantity>
Explicit constructor for lossy conversions.
Every conversion that the cast can perform and that is not implicit (see above) is explicit: a lossy one (to a coarser precision, or from a floating-point rep to an integral one), or one to a rep that the source rep converts to only explicitly. The value is that of the domain's cast, truncated toward zero. The cast can perform the conversion when the conversion factor between the precisions fits in a std::ratio and the reps are integral or have a common type with intmax_t through which the count converts.
- Template Parameters
-
| Rep2 | Source representation type. |
| Precision2 | Source precision. |
- Parameters
-
Definition at line 303 of file spatial.hpp.