⚠️ Breaking changes
millifahrenheitanddelta_millifahrenheitcounts change meaning by 10×. These types usedstd::ratio<5, 900>(0.01 °F per count) instead of the documentedstd::ratio<5, 9000>(0.001 °F per count). The ratio now matches the documentation:temperature_cast<millifahrenheit>(fahrenheit(1)).count()was 100 and is now 1000. Any stored or transmitted raw counts from these two types must be reinterpreted; all other types are unaffected.- The
celsius_real,kelvin_real, andfahrenheit_realtypedefs are removed. They existed mainly as a display workaround, which spec-based rendering (below) covers directly. Migration: replacestd::format("{:.1f}", temperature_cast<celsius_real>(x))withstd::format("{:.1f}", x). Generic floating-point rep support remains available via e.g.temperature<celsius_scale, delta<double>>.
What's new
- All temperature and delta types now honor floating-point format specs, rendering the value in scale degrees:
std::format("{:.1f}", millicelsius(22534))→"22.5°C",{:.1f}ofdelta_millifahrenheit(9000)→"9.0Δ°F". The empty spec keeps the exact-count form ("22534m°C") unchanged. - The 18 hand-written
std::formatterspecializations and 15to_stringoverloads are replaced by two generic templates each, covering everytemperature/deltainstantiation with byte-identical default output.
Full Changelog: v1.3.0...v2.0.0