Auto เป็นคีย์เวิร์ดที่ C++ "สืบทอด" มาจาก C ที่มีมานานเกือบตลอดกาล แต่เกือบไม่เคยถูกใช้งาน สิ่งนี้เปลี่ยนไปเมื่อมีการนำ auto มาทำ type deduction จาก context ใน C++11 ก่อน C++11 ทุกชนิดข้อมูลต้องประกาศชัดเจนที่ compile time จำกัดค่าของ expression ที่ runtime แต่หลังจากเวอร์ชันใหม่ของ C++ มีคีย์เวิร์ดหลายตัวที่เพิ่มเข้ามา ซึ่งช่วยให้โปรแกรมเมอร์สามารถปล่อยให้คอมไพเลอร์ทำ type deduction เองได้
ด้วยความสามารถในการอนุมานชนิด (type inference) เราสามารถลดเวลาที่ต้องเขียนสิ่งที่คอมไพเลอร์รู้อยู่แล้ว เนื่องจากทุกชนิดถูกอนุมานในขั้นตอน compile time เท่านั้น เวลาคอมไพล์เพิ่มขึ้นเล็กน้อย แต่ไม่ส่งผลต่อ runtime ของโปรแกรม
คีย์เวิร์ด auto ระบุว่าชนิดของตัวแปรที่กำลังประกาศจะถูกอนุมานโดยอัตโนมัติจาก initializer ของมัน และสำหรับฟังก์ชัน หาก return type เป็น auto จะถูกประเมินจาก return type expression ที่ runtime
ตัวอย่าง
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec(10);
// Auto deduce type to be iterator of a vector of ints.
for(auto it = vec.begin(); it != vec.end(); ++it) {
cin >> *it;
}
return 0;
}