When to use decltype(auto) in C++ function returns
This hard C++ language-knowledge question tests whether you understand the subtle but critical distinction between auto and decltype(auto) in return-type deduction. It separates candidates who have shipped production code from those who have only read about type deduction in passing.
The question rewards clear thinking about reference semantics, cv-qualifiers, and when you need the deduced type to preserve the exact form of an expression rather than stripping it down to its "value category." Interviewers use this to assess whether you can reason precisely about return-type contracts and avoid silent bugs that arise from incorrect reference propagation.
- Auto return-type deduction and decay rules
- Rvalue references, lvalue references, and const/volatile qualifiers
- Perfect forwarding and expression category preservation
- Common pitfalls in generic code and wrapper functions