Может ли кто-нибудь предоставить сравнение или конкретные сведения о том, как создается экземпляр шаблона обрабатывается при компиляции и/или времени ссылки в компиляторах GCC и MS? Этот процесс отличается в контексте статических библиотек, разделяемых библиотек и исполняемых файлов? Я нашел этот документ о том, как GCC обрабатывает его, но я не уверен, что информация по-прежнему относится к текущему состоянию вещей. Должен ли я использовать флаги они предлагают там при компиляции моих библиотек, например. -fno-неявные-шаблоны?
То, что я знаю (возможно, не обязательно правильно), заключается в следующем:
- шаблоны будут созданы при фактическом использовании
- шаблоны будут созданы в результате явных инстанций
- дублирование экземпляра обычно обрабатывается путем складывания повторяющихся экземпляров или путем отсрочки создания экземпляра до времени ссылки