Re[24]: Экспортировать специализации
От: vdimas Россия  
Дата: 31.01.17 09:16
Оценка:
Здравствуйте, Qbit86, Вы писали:

V>>Можно экспортировать специализации шаблонов.

Q>А если специализаций нет, весь код обобщённый?

Значит он сугубо библиотечный под неизвестные типы, и?


Q>Экспортировать можно только для типов, известных заранее автору библиотеки.


Ну, например в Хаскеле "библиотеки" представляют из себя пару — некий бинарный код (если есть) и предварительно-распарсенное текстовое AST библиотечного обобщённого кода.


Q>Явные инстанцирования для пользовательских типов так не сделать. Такой подход обсуждался в ветке про распухание бинарного кода.


Опять пустозвонство. Если распухание страшно, какие проблемы использовать динамический полиморфизм или static cast?

Или у нас в дотнете всегда в List<T> хранятся value-типы? Ты в сравнении с чем своё "распухание" сравниваешь? И какое из распуханий более страшное — на диске или в оперативной памяти? Какой из ресурсов у нас более ограничен-то?

Если хранятся ссылочные данные, то все инстансы vector<T*> будут заведомо склеены, ес-но. А в дотнете для ВСЕХ value-type джит породит НЕЗАВИСИМЫЕ реализации и засерет ими память, даже если бы их потенциально можно было бы "склеить".

ИМХО, тут даже сравнивать нечего — дотнете ВСЕГДА жрет больше памяти под код и под данные.

Далее, даже если без "скейки". Вот у нас есть некий контейнер указателей (аналог List<T> дотнета, где T — ссылочный тип).
Ничто не мешает нарисовать базовый "нетипизированный" вариант такого контейнера, а затем к нему инлайн-обёртку, которая будет в публичных методах принимать только "типизированные" указатели и возвращать такие же. Ву а ля или еще нет?
Отредактировано 31.01.2017 19:02 vdimas . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.