Hardtemplate-instantiation
Что такое explicit template instantiation?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Explicit instantiation — ручное инстанцирование шаблона в одном месте, чтобы не дублировать в каждом TU.
// vector_int.cpp — определение один раз
template class std::vector<int>; // генерирует весь код vector<int>
// other.cpp — обещаем не инстанцировать (ускоряет сборку)
extern template class std::vector<int>;Применения:
- ускорение компиляции —
vector<int>генерируется в одном .cpp, остальные TU используютextern; - скрытие реализации — определение шаблона в .cpp + explicit instantiation для нужных типов.
Широко используется в больших библиотеках (Qt, Boost). Минус — нужно явно перечислить все нужные типы.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.