Кіріспе

C++ стандартты кітапханасына қосымшаларды ұсынған құжат. C++ техникалық есеп 1 (TR1) – ISO/IEC TR 19768, C++ кітапханасының кеңейтімдері, бұл C++03 тіл стандарты үшін C++ стандартты кітапханасына қосымшаларды ұсынған құжат. Қосымшаларға реттелген өрнектер, интеллектуалды көрсеткіштер, хэш-кестелер және кездейсоқ сандар генераторлары кіреді. TR1 өзі стандарт емес, оның орнына жоба құжат болды. Дегенмен, оның көптеген ұсыныстары кейінірек ресми стандарт, C++11-дің бір бөлігіне айналды. C++11 стандартталғанға дейін, жеткізушілер осы құжатты кеңейтімдер жасауға арналған нұсқаулық ретінде пайдаланды. Есептің мақсаты – «кеңейтілген C++ стандартты кітапханасы үшін кеңінен тараған тәжірибені қалыптастыру» болды. Есеп алғаш рет 2005 жылы C++ кітапханасы кеңейтімдері жөніндегі техникалық есеп жобасы ретінде таралды, содан кейін 2007 жылы ISO/IEC TR 19768:2007 ретінде ISO/IEC стандарты ретінде жарияланды.

Шолу

Компиляторларға C++ стандартына сәйкес болу үшін TR1 компоненттерін қосу міндетті емес еді, себебі TR1 ұсыныстары стандарттың өзінің бір бөлігі емес, әлі бекітілмеген мүмкін қосымшалар жиынтығы ғана болатын. Дегенмен, TR1-дің көп бөлігі Boost арқылы қолжетімді болды және бірнеше компилятор/кітапхана жеткізушілер компоненттердің барлығын немесе бір бөлігін іске асырды. TR1, C++11-де кітапханаға қосылған барлық қосымшалардың толық тізімі емес. Мысалы, C++11 TR1-де жоқ тікелей бағдарламалау талқыбын (thread) қолдау кітапханасын қамтиды. Жаңа компоненттер оларды сол кездегі қолданыстағы стандартты кітапханадан ажырату үшін std::tr1 атау кеңістігінде анықталды.

Метапрограммалау және типтік белгілер

Қазір <type traits> атты header файлы бар, онда is_pod, virtual destructor-дың болуы, remove_extent сияқты көптеген пайдалы қасиет мета-үлгілері қамтылған. Ол түрлі типтерге қатысты сұраулар жасауға және түрлендірулер орындауға мүмкіндік бере отырып, метапрограммалауды жеңілдетеді. Ұсыныс Boost Type Traits кітапханасы негізінде жасалған.

C үйлесімділік

C++ C бағдарламалау тілімен үйлесімді болу үшін жасалған, бірақ стандарттардың өзгешелігіне байланысты C тілінің толыққанды жиынтығы емес. TR1 C++ кітапханасындағы <complex>, <locale>, <cmath> сияқты әртүрлі тақырыптарға қосымшалар енгізу арқылы осы айырмашылықтарды жақындастыруға тырысады. Бұл өзгерістер C++ тілін C стандартының C99 нұсқасына жақындатуға көмектеседі (C99-дың барлық бөлімдері TR1-ге қосылмаған).