170 похожих чатов

В супапро все заняты срачем, реквестую сюда: Здравствуйте. Вопросец по

шаблонам: вот запилил я шаблонный класс/функцию/etc. Фактически инстанцироваться оно будет в той библиотеке, которая затребовала конкретную реализацию. Однако, для каких-то базовых вещей, например примитивных типов, я могу инстанцировать код заранее, в "исходной" библиотеке. Правильно ли я понимаю, что компилятор найдёт этот инстанс и возьмет его из прилинкованной библиотеки, или всё-таки реализация будет дублирована?

17 ответов

7 просмотров

Неправильно, не найдет

Пашечка- Автор вопроса
Ilya Zviagin
Неправильно, не найдет

То есть инстанцироваться реализация будет дважды, по одной для каждой библиотеки?

Там есть extern template, чтобы не инстанцировалось.

Ilya Zviagin
Неправильно, не найдет

Если прописать специализацию - найдет

Пашечка
То есть инстанцироваться реализация будет дважды, ...

Нет смысла инстанциировать в библиотеке, по месту использования только

Пашечка- Автор вопроса
Pavel
Если прописать специализацию - найдет

Нет, без специализации, обычное шаблонное поведение.

Пашечка- Автор вопроса
Ilya Zviagin
Нет смысла инстанциировать в библиотеке, по месту ...

Ну, есть, чтобы не раздувать каждую свою библиотеку.

Пашечка- Автор вопроса
Ilya Zviagin
Зачем ты этим паришься ?

Интересно стало, решил озадачиться.

Ilya Zviagin
Зачем ты этим паришься ?

А мы тут не все этим занимаемся?

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

Пашечка
Интересно стало, решил озадачиться.

95% маршевого использования шаблонов - реализация в заголовочных файлах, inline. Потом компилятор может это все оптимально смержить

Vlad
да

И в этом я тоже сомневаюсь

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
12
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Утра доброго. Просветите пожалуйста. Хочу сделать rest сервер на делфи. Посмотрел 3 фреймворка: dmvc, Mars, mormot. Ни в одном из них не упоминается ассинхронная обработка вхо...
Сергей Бычков
10
Как попросить stack install делать executable без .exe на винде?
Danila Danko
9
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
Карта сайта