#include #include #include int main() { // 1. Basic type deduction auto i = 42; // int auto d = 3.14; // double auto s = std::string{"hello"}; // std::string // 2. Auto with iterators (most common use case) std::vector nums = {1, 2, 3, 4, 5}; // Without auto: std::vector::iterator it = nums.begin(); for (auto it = nums.begin(); it != nums.end(); ++it) { std::cout << *it << " "; } std::cout << "\n"; // 3. Range-based for loop std::map ages = {{"Alice", 30}, {"Bob", 25}}; // Without auto: for (const std::pair& p : ages) for (const auto& [name, age] : ages) { std::cout << name << " is " << age << "\n"; } // 4. Auto with functions (C++14 return type deduction) auto add = [](auto a, auto b) { return a + b; }; std::cout << add(3, 4) << "\n"; // 7 std::cout << add(1.5, 2.5) << "\n"; // 4.0 return 0; }