...one of the most highly
regarded and expertly designed C++ library projects in the
world.

— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards

boost::units::dim — Dimension tag/exponent pair for a single fundamental dimension.

// In header: <boost/units/dim.hpp> template<typename T, typename V> struct dim { // types typedef dim type; typedefunspecifiedtag; typedef T tag_type; typedef V value_type; };

The dim class represents a single dimension tag/dimension exponent pair. That is, `dim<tag_type,value_type>`

is a pair where `tag_type`

represents the fundamental dimension being represented and `value_type`

represents the exponent of that fundamental dimension as a `static_rational`

. `tag_type`

must be a derived from a specialization of `base_dimension`

. Specialization of the following Boost.MPL metafunctions are provided - @c mpl::plus for two @c dims
- @c mpl::minus for two @c dims
- @c mpl::negate for a @c dim

These metafunctions all operate on the exponent, and require that the `dim`

operands have the same base dimension tag. In addition, multiplication and division by `static_rational`

is supported. - @c mpl::times for a @c static_rational and a @c dim in either order
- @c mpl::divides for a @c static_rational and a @c dim in either order

These metafunctions likewise operate on the exponent only.