C++03 — редакція стандарту мови програмування C++, формально опублікована як . Стандарт був затверджений у 2003 році спільно Міжнародною організацією зі стандартизації (ISO) та Міжнародною електротехнічною комісією (IEC).
C++03 замінив попередній стандарт C++98 і пізніше був замінений стандартом C++11.
Історія та призначення Основною метою стандарту C++03 було усунення помилок, неточностей і неоднозначностей, виявлених у стандарті C++98. На відміну від наступних версій, C++03 майже не впроваджував нових мовних можливостей і розглядається переважно як реліз виправлення дефектів, спрямований на підвищення узгодженості та портативності реалізацій компіляторів і стандартної бібліотеки.
Зміни порівняно з C++98
Виправлення дефектів У стандарті C++03 було враховано значну кількість накопичених звітів про дефекти: 92 звіти щодо основної мови; 125 звітів щодо стандартної бібліотеки.
Ці уточнення конкретизували семантику мови та вимоги до стандартної бібліотеки, істотно зменшуючи розбіжності між реалізаціями різних компіляторів.
Ініціалізація значеннями Єдиною новою мовною можливістю, формально доданою у C++03, стала ініціалізація значеннями (). Вона визначила чітку та передбачувану поведінку ініціалізації обʼєктів нульовими або типовими значеннями й усунула низку раніше неоднозначних випадків.
Безперервне зберігання std::vector Одним із найбільш відомих рішень стандарту C++03 стало врегулювання звіту про дефект бібліотеки № 69 (LWG 69), який стосувався контейнера .
Передумови У стандарті C++98 не існувало формальної вимоги щодо безперервного розміщення елементів контейнера std::vector у памʼяті. Хоча більшість реалізацій фактично використовували суцільний блок памʼяті, стандарт прямо цього не гарантував.
Зміни в C++03 C++03 закріпив вимогу, що елементи std::vector повинні зберігатися безперервно в памʼяті. Це стандартизувало поширене припущення серед програмістів і дозволило безпечно використовувати std::vector у сценаріях, що залежать від масивоподібного компонування памʼяті.
Значення Хоча C++03 не запровадив масштабних нових механізмів, він відіграв ключову роль у стабілізації мови C++. Стандарт підвищив передбачуваність поведінки програм, покращив сумісність між реалізаціями та створив надійну основу для подальших суттєвих змін, реалізованих у C++11.
Код, написаний відповідно до вимог C++03, і надалі використовується у системному програмуванні та в проєктах з підвищеними вимогами до стабільності й портативності.
Примітки