Mediumшаблоны
Что такое non-type template parameter?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Non-type template parameter — параметр-значение, не тип: целое, enum, указатель/ссылка, auto (с C++17).
template<class T, size_t N>
class Array { T data[N]; };
std::array<int, 10> a; // N = 10
std::bitset<32> flags; // размер в compile-time
// Compile-time вычисление
template<int N>
struct Fib { static constexpr int v = Fib<N-1>::v + Fib<N-2>::v; };- Должен быть constexpr (константное выражение);
- С C++20 —
double/floatи тривиально сравнимые struct/class; - Лежит в основе
std::array<T, N>,std::bitset<N>, размеров и параметров алгоритмов.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.