Здравствуйте, BulatZiganshin, Вы писали:
К>>Думаю, что дело в другом. У С++, как у наследника С, есть развитая система неявного приведения типов. Которая катастрофически усложняет вывод типа от результата к аргументам.
BZ>не в большей степени, чем обратный вывод
BZ>что действительно является приницпиальным ограничением, так это передача словаря методов класса (VMT) как части объекта. нет объекта — нет и VMT.
В чём препятствие? VMT — это кортеж лямбд (которые можно с самого начала замкнуть на конкретный объект — хоть это и оверхед).
Для нормальной работы нужно, чтобы система типов допускала наследование структур.
Кажется, это не ломает ХМ, потому что обращение к определённому полю VMT означает заведомый up-casting до базовой структуры VMT, содержащей это поле, и в дальнейшем информация о типе VMT уже не нужна.
Как-то я путано сказал — поскольку сам до конца не вкурил.
Если можешь привнести ясность — буду благодарен.
BZ> в type classes она передаётся отдельно, поэтому можно сделать что-нибудь в духе
В type classes передаётся статическая информация о типе, там про VMT можно вообще не задумываться (тем более, про VMT конкретных объектов).
BZ>в C++ есть templates, которые ввиду их резолвинга во время компиляции не обладают этим ограничением, и насколько я понимаю, тоже отлично резолвятся в обе стороны
В плюсовых шаблонах утиная типизация — поэтому они и резолвятся (на уровне шаблонов) отлично, что уравнения типов сводятся ну максимум к проверке арности.
... << RSDN@Home 1.2.0 alpha rev. 655>>