Я не помню имя lib, но идея заключалась в том, чтобы использовать шаблонные типы, параметризованные целыми числами, для обеспечения согласованности при выполнении согласованности при выполнении вычислений между физическими величинами. Концепция очень проста, возьмите шаблонный тип, который просто встраивает поплавок двойной точности. Параметризован тремя целыми числами, один для массы, один для расстояния, один для времени. Например, скорость - это параметр расстояния = 1 и параметр времени = -1. Ускорение равно параметру расстояния = 1, параметру времени = -2. Затем перегрузите все операторы, чтобы можно было только добавлять / вычитать типы с одинаковыми параметрами, и вы суммируете параметры при работе с продуктом. Таким образом, если скорость равна типу <1, -1,0>, а время равно типу <0,1,0>, то скорость x время равна типу <1 + 0,1 + -1,0 + 0>, поэтому скорость * время -> расстояние.
Мало того, что это умный, но это один из немногих примеров хорошего использования шаблонов с параметрами, отличными от typename