LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

я в ваших растах не разбираюсь, а enum для размеченного обьединения я впервые увидел в нем.

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

псевдокод, записываем int в «тип сумму».

(int, float) <- int
(float, int) <- int

в первом случае тег варианта = 0, во втором = 1.

то есть либо надо говорить, что это типы разные, либо сравнивать такие типы специальным образом, пересчитывая теги.

итак что отвечает раст(или кто-то там) на вопрос - являются ли эти типы эквивалентными, то есть приводимыми по умолчанию. для меня вот очевидно, что подставить значение первого типа во второй - это систему сломать. у них разные теги внутри

Исходная версия alysnix, :

я в ваших растах не разбираюсь, а enum для размеченного обьединения я впервые увидел в нем.

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

псевдокод, записываем int в «тип сумму». (int, float) <- int (float, int) <- int

в первом случае тег варианта = 0, во втором = 1.

то есть либо надо говорить, что это типы разные, либо сравнивать такие типы специальным образом, пересчитывая теги.

итак что отвечает раст(или кто-то там) на вопрос - являются ли эти типы эквивалентными, то есть приводимыми по умолчанию. для меня вот очевидно, что подставить значение первого типа во второй - это систему сломать. у них разные теги внутри