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