A physical value is represented by the amount of basic units it consists of. Physical types differ in their bounds, name and scaling of their units. A template is used to build the required type classes automatically:
template<class R> class physical_type : public physical_base { ... };
R
is the corresponding physical type info class which
provides the bounds and units of the physical type.