LINUX.ORG.RU

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

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

Я вам говорю про семантику того, что вы пишете.

А я вам говорю про семантику вариадиков. Я отлично понимаю, что оверлоадинг разрешается во время компиляции и там будет обычный статический код. Тем не менее, семантически он является динамическим. В реализации на трейтах, код полиморфен по принимаемому типу, и этот тип имеет определенную структуру, включающую неограниченное количество других типов.

Ваш трейт параметризован T и U: Zip.

Трейт ничем не параметризован. Он реализован для множества типов вида (T1, (T2, … (TN, ()) … )).

Ну вот не можете. (a, b, c) <> ((a, b), c)

С чего бы это? Между этими формами записи есть взаимно однозначное соответствие. Конверсия между ними тривиальна, так что семантически (хех) это - одно и то же.

Исправление red75prim, :

Я вам говорю про семантику того, что вы пишете.

А я вам говорю про семантику вариадиков. Я отлично понимаю, что оверлоадинг разрешается во время компиляции и там будет обычный статический код. Тем не менее, семантически он является динамическим. В реализации на трейтах, код полиморфен по принимаемому типу, и этот тип имеет определенную структуру, включающую неограниченное количество других типов.

Ваш трейт параметризован T и U: Zip.

Трейт ничем не параметризован. Он реализован для множества типов вида (T1, (T2, … (TN, ()) … )).

Ну вот не можете. (a, b, c) <> (a, (b, (c, ())))

С чего бы это? Между этими формами записи есть взаимно однозначное соответствие. Конверсия между ними тривиальна, так что семантически (хех) это - одно и то же.

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

Я вам говорю про семантику того, что вы пишете.

А я вам говорю про семантику вариадиков. Я отлично понимаю, что оверлоадинг разрешается во время компиляции и там будет обычный статический код. Тем не менее, семантически он является динамическим. В реализации на трейтах, код полиморфен по принимаемому типу, и этот тип имеет определенную структуру, включающую неограниченное количество других типов.

Ваш трейт параметризован T и U: Zip.

Трейт ничем не параметризован. Он реализован для множества типов вида (T1, (T2, … (TN, ()) … )).

Ну вот не можете. a -> b -> c <> (a -> b) -> c.

Скобки не так расставили. Любая функция вида a->b->c может быть записана как a->(b->c), или как (a,b) -> c, или как (a,(b,())) -> c