Есть ли причина не использовать юнит-типы?

Концептуально мне кажется, что использование юнитов на основе типов (Метры, секунды, килограммы) будет иметь огромные преимущества (дополнительная проверка в передаче аргументов, избавление от имен модулей в vars и т. д.) и все же я не сталкивался с большим количеством кода, который делает. И код, который я видел, использует пользовательские типы.

Я вижу, что Boost имеет библиотеку единиц (увеличить :: единицы достаточно просто) и тем не менее, я не вижу много доказательств того, что он широко используется (в основном поиске Google).

Есть ли для этого веская причина?

Все вместе они, кажется, подразумевают, что должна быть какая-то причина, по которой практика не получила такого широкого распространения, как я ожидал. Возможно, больше проблем, чем они стоят по какой-то причине?

И поэтому я спрашиваю:

Есть ли причина не использовать юнит-типы? И, в частности, есть ли причина не использовать boost :: units?

6

Решение

Я думаю, что главная причина, по которой эта техника не более распространена, заключается в том, что ее ужасно сложно и громоздко излагать и читать.

Надеемся, что это наконец станет более приемлемым стилем программирования с C ++ 11, который добавляет пользовательские литералы на язык, который позволяет вам писать:

auto acc = 10_m / 1_s / 1_s;

а не традиционный

myframework::units::si<acceleration>::type acc = myframework::unit_cast<units::meters>(10.0)
/ myframework::unit_cast<units::seconds>(1)
/ myframework::unit_cast<units::seconds>(1);
6

Другие решения

Я использовал эту библиотеку для большой пользы для написания правильного кода. К сожалению, использовать его в 10 раз сложнее, чем должно быть. Это все еще стоит, хотя отслеживать размеры и единицы — это кошмар.

Библиотека бустеров очень умная, мощная и полная. Проблема в том, что документация почти не читается. Есть много проблем с запутанными именами, нет требований к типу. Авторы включили много примеров, которые полезны, но не заменяют собой более качественный документ.

К вашему сведению — я представил учебник по этой теме на CPPcon 2015. Вы можете найти его на https://www.youtube.com/watch?v=qphj8ZuZlPA

3