extern template
Вопрос
Как сократить время сборки, если один шаблон с одними и теми же аргументами инстанцируется в сотне файлов?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Ответ
В заголовке объявить extern template class Foo<int>;, чтобы единицы трансляции не инстанцировали его сами, а в одном .cpp написать явное инстанцирование template class Foo<int>;. Ещё помогают предкомпилированные заголовки и модули C++20.
Разбор
В заголовке объявить extern template class Foo<int>;, чтобы единицы трансляции не инстанцировали его сами, а в одном .cpp написать явное инстанцирование template class Foo<int>;. Ещё помогают предкомпилированные заголовки и модули C++20.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Шаблоны и концепты»
- Дерево отрезков с операцией как параметром шаблона
- Обобщённая функция статистики для чисел и строк
- Один бинарный поиск на все случаи: предикат как параметр шаблона
- Зачем концепты
- Концепты против SFINAE
- Вывод аргументов шаблона класса
- Вывод T при передаче по значению
- Как компилируются шаблоны