шаблонам: вот запилил я шаблонный класс/функцию/etc. Фактически инстанцироваться оно будет в той библиотеке, которая затребовала конкретную реализацию. Однако, для каких-то базовых вещей, например примитивных типов, я могу инстанцировать код заранее, в "исходной" библиотеке. Правильно ли я понимаю, что компилятор найдёт этот инстанс и возьмет его из прилинкованной библиотеки, или всё-таки реализация будет дублирована?
Неправильно, не найдет
То есть инстанцироваться реализация будет дважды, по одной для каждой библиотеки?
Там есть extern template, чтобы не инстанцировалось.
Если прописать специализацию - найдет
Нет смысла инстанциировать в библиотеке, по месту использования только
Нет, без специализации, обычное шаблонное поведение.
Да ну все это костыли
Зачем ты этим паришься ?
Ну, есть, чтобы не раздувать каждую свою библиотеку.
Интересно стало, решил озадачиться.
А мы тут не все этим занимаемся?
вы можете так сделать, и эту явную инстанциацию можно будет прилинковать, но чтобы компилятор пошел именно этим путем, надо также запретить ему неявно инстанцировать шаблон там, где он используется. как написали выше, для этого нужен extern template
95% маршевого использования шаблонов - реализация в заголовочных файлах, inline. Потом компилятор может это все оптимально смержить
Все компиляторы его поддерживают?
И в этом я тоже сомневаюсь
Обсуждают сегодня