@ingroup UnitTypes
@brief Class representing SI base unit types.
@details Base units are represented by a combination of std::ratio template parameters, each
describing the exponent of the type of unit they represent. Example: meters per second
would be described by a +1 exponent for meters, and a -1 exponent for seconds, thus:
base_unit<std::ratio<1>, std::ratio<0>, std::ratio<-1>>
@tparam Meter std::ratio representing the exponent value for meters.
@tparam Kilogram std::ratio representing the exponent value for kilograms.
@tparam Second std::ratio representing the exponent value for seconds.
@tparam Radian std::ratio representing the exponent value for radians. Although radians are not SI base units, they are included because radians are described by the SI as m * m^-1, which would make them indistinguishable from scalars.
@tparam Ampere std::ratio representing the exponent value for amperes.
@tparam Kelvin std::ratio representing the exponent value for Kelvin.
@tparam Mole std::ratio representing the exponent value for moles.
@tparam Candela std::ratio representing the exponent value for candelas.
@tparam Byte std::ratio representing the exponent value for bytes.
@sa category for type aliases for SI base_unit types.
@ingroup UnitContainers
@brief Container for values which represent quantities of a given unit.
@details Stores a value which represents a quantity in the given units. Unit containers
(except scalar values) are not convertible to built-in c++ types, in order to
provide type safety in dimensional analysis. Unit containers are implicitly
convertible to other compatible unit container types. Unit containers support
various types of arithmetic operations, depending on their scale type.