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 подскажет развёрнутый ответ в реальном времени.