Практично кожне слово, яке ви можете додати як ключове слово до мови, майже напевно було використано як ім'я змінної чи іншу частину робочого коду. Цей код буде порушений, якби ви зробили це слово ключовим словом.
Неймовірно щаслива річ у autoтому, що це вже було ключове слово, тому у людей не було змінних з цим ім'ям, але ніхто не використовував його, оскільки це було за замовчуванням. Чому типу:
auto int i=0;
коли
int i=0;
означало саме те саме?
Я припускаю, що десь на планеті була якась невелика кількість коду, яка використовувала «авто» по-старому. Але це можна було б виправити, видаливши "auto", і воно буде працювати знову. Тож було досить очевидним вибором змінити ключове слово.
Також мені здається, що це ясніше значення. Якщо ви працювали з подібними варіантами, ви можете побачити, varщо декларація якось менш сильно набрана, ніж якщо ви натискали всі клавіші самостійно на клавіатурі, щоб вказати тип змінної. Мені autoстає зрозуміліше, що ви просите компілятор автоматично вивести тип, який настільки ж сильний, як якщо б ви його вказали самостійно. Тож справді це була дуже вдала перерва, яка зробила гарне ім’я доступним для комітету.
Для уточнення (малого) розриву:
Якби у вас був
auto int i=0;
і спробувавши компілювати компілятор C ++ 11, тепер ви отримаєте помилку типу
помилка C3530: "auto" не може поєднуватися з будь-яким іншим специфікатором типу
Це тривіально, ви просто видалите або авто, або int та перекомпілювати.
Однак є більша проблема. Якби у вас був
auto i = 4.3;
C і справді старий C ++ зробив iби int(як це було б, якщо ви припинили auto- декларація за замовчуванням була int). Якщо ви пройшли дуже довгий час, не складаючи цей код, або використовуєте старі компілятори, ви могли б мати частину цього коду, принаймні теоретично. C ++ 11 зробив би це doubleтак, оскільки це 4.3. (Або, можливо float, я все ще перебуваю в режимі "Боксерський день", але справа не в цьому int.) Це може ввести непомітні помилки у вашому додатку. І без попереджень чи помилок компілятора. Люди в цьому човні повинні шукати глобально, autoщоб переконатися, що вони не використовували його старим способом, перш ніж перейти до компілятора C ++ 11. На щастя, такий код зустрічається вкрай рідко.
autoможе порушити зворотну сумісність, але, залежно від того, як частоvarвикористовується в якості імені змінної, порівняно з тим, як частоautoключове слово використовується в коді до 11, комітет, можливо, висловив думку про те, що він порушує сумісність менш кардинально, ніж введення нового ключове слово буде.