История изменений
Исправление DarkEld3r, (текущая версия) :
И наоборот, для программистов на статических языках температура в цельциях, длина объекта и географическая широта — один тип.
Это каким-то догматизмом попахивает. Вот писали мы блокчейн на расте: высота, раунд и прочие штуки были отдельными (своими) типами, хотя всё это числа. В проекте, в котором сейчас участвую, есть ряд UUID-сущностей - тоже отдельные конкретные типы. В плюсовом проекте, в котором я участвовал до этого, есть код типа такого:
template <typename Value, typename Tag>
class Tagged;
struct АTag final{};
struct BTag final{};
...
using А = Tagged<double, ATag>;
using В = Tagged<double, ВTag>;
...
using Х = boost::variant<А, В, ...>;
using ХS = Vector<X>;
Да, никто не типизирует всё и всегда, ну и что? Это удобный инструмент и пользуются им не так редко, как тебе кажется.
Несмотря на то, что диапазон возможных значений в реальности существенно отличается.
Всё-таки «разные типы» и «правильные ограничения типов» - это не одно и то же.
Исправление DarkEld3r, :
И наоборот, для программистов на статических языках температура в цельциях, длина объекта и географическая широта — один тип.
Это каким-то догматизмом попахивает. Вот писали мы блокчейн на расте: высота, раунд и прочие штуки были отдельными (своими) типами, хотя всё это числа. В проекте, в котором сейчас участвую, есть ряд UUID-сущностей - тоже отдельные конкретные типы. В плюсовом проекте, в котором я участвовал до этого, есть код типа такого:
template <typename Value, typename Tag>
class TV;
struct АTag final{};
struct BTag final{};
...
using А = TV<double, ATag>;
using В = TV<double, ВTag>;
...
using Х = boost::variant<А, В, ...>;
using ХS = Vector<X>;
Да, никто не типизирует всё и всегда, ну и что? Это удобный инструмент и пользуются им не так редко, как тебе кажется.
Несмотря на то, что диапазон возможных значений в реальности существенно отличается.
Всё-таки «разные типы» и «правильные ограничения типов» - это не одно и то же.
Исходная версия DarkEld3r, :
И наоборот, для программистов на статических языках температура в цельциях, длина объекта и географическая широта — один тип.
Это каким-то догматизмом попахивает. Вот писали мы блокчейн на расте: высота, раунд и прочие штуки были отдельными (своими) типами, хотя всё это числа. В проекте, в котором сейчас участвую, есть ряд UUID-сущностей - тоже отдельные конкретные типы. В плюсовом проекте, в котором я участвовал до этого, есть код типа такого:
template <typename Value, typename Tag>
class TV;
struct АTag final{};
struct BTag final{};
...
using А = TV<double, ATag>;
using В = TV<double, ВTag>;
...
using Х = boost::variant<А, В>;
using ХS = Vector<X>;
Да, никто не типизирует всё и всегда, ну и что? Это удобный инструмент и пользуются им не так редко, как тебе кажется.
Несмотря на то, что диапазон возможных значений в реальности существенно отличается.
Всё-таки «разные типы» и «правильные ограничения типов» - это не одно и то же.