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

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

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

17 ответов

28 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vlad
да

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта