std type-safe measurement units in fashion of std::chrono

post-increment
post-increment

Хочется, чтобы всё это было реализовано в концепции аналогичной и дружественной std::chrono.
Представляется разумным, чтобы можно было единицы с собой спаривать в операциях умножения и деления.
Например, длина/время -> скорость.
Сейчас время/время (при допустимых типах представителя rep) - безразмерная величина - уже логичный задел.
Аналогично и для других единиц измерения.
Сразу видится, что, если за единицу длины возьмём метр - std::ratio<1,1>,
то единицей скорости будет метр в секунду - std::ratio<1,1>.
Километры в час соответственно представлены std::ratio<1000,3600>=std::ratio<5,18>.
И т.д.

Я припоминаю были также другие доклады и статьи на эту тему.
Навскидку например нашёл:
https://github.com/nholthaus/units
https://www.boost.org/doc/libs/1_65_0/doc/html/boost_units/Examples.html#boost_units.Examples.DimensionExample
https://github.com/martinmoene/PhysUnits-CT

Дизайны уж очень местами отличаются от std::chrono.
ИМХО, если брать в стандарт, то только что-то концептуально схожее и совместимное с std::chrono. 

4
рейтинг
1 комментарий
yndx-antoshkka

Близкое по духу предложение: https://stdcpp.ru/proposals/88c9343c-6a11-4da9-904c-7ab24c65333a

Один умный человек в комитете мне говорил, что он согласится принять подобную библиотеку в стандарт, только если она действительно будет универсальной и всеобъемлющей. Поэтому он всегда спрашивает, "можно ли с вашим предложением посчитать '(5 локтей + 3 вершка + 7 английских морских узлов) / световой год' и 'униция / 9 бит'"

yndx-antoshkka
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения