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