Mediumautodecltype
Чем decltype отличается от auto?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
`auto` выводит тип из инициализатора, отбрасывая ссылки и const. `decltype(expr)` даёт объявленный тип выражения, сохраняя const и ссылочность.
const int& ci = x;
auto a = ci; // int (потеряны const и &)
decltype(ci) b = ci; // const int& (сохранены)
// Полезно для trailing return type
template<class T>
auto f(T& t) -> decltype(t.foo()) { return t.foo(); }В C++14+ decltype(auto) совмещает: использует правила decltype для вывода из инициализатора. Главное отличие: auto теряет const/&, decltype сохраняет.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.