Карточка Senior Шаблоны и концепты обновлено

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.

Разбор

В заголовке объявить extern template class Foo<int>;, чтобы единицы трансляции не инстанцировали его сами, а в одном .cpp написать явное инстанцирование template class Foo<int>;. Ещё помогают предкомпилированные заголовки и модули C++20.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.