
How do you implement conversions between units that require more complicated arithmetic expressions (e.g. units of temperature)? Conversions for the vast majority of units are simply multiples of each other and the conversion can be expressed at compile-time and multiplied by a runtime quantity value:
Take a look at unit_example_20 to see a demonstration of implementing temperature conversions (both absolute and relative). It turns out that relative temperature conversions are trivial (converting a temperature difference of 32 degrees Fahrenheit to Kelvin just involves the scale factor of 5/9). Absolute temperatures are the issue. Basically, at this point the library assumes that all quantities are relative as that makes the default behavior the most sensible. While it is probably worthwhile to have the absolute<> concept (also could be point<>) as a part of boost::numeric, I don't think it is really something that properly belongs in the unit library itself; hence it is only an example... You can achieve basically arbitrary conversions between quantities by specializing the conversion_helper<quantity1,quantity2> class... Matthias