auto and decltype
auto isn't just a way to avoid writing types—it has complete deduction rules, proxy-type pitfalls, and consistency with template deduction. decltype is the cornerstone of template metaprogramming, letting you precisely obtain the type of an expression. C++17's CTAD makes template argument deduction more concise than ever. In this chapter, we thoroughly cover the three dimensions of type deduction: auto, decltype, and CTAD.