Кіріспе
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++ Technical Report 1 (TR1) is the common name for ISO/IEC TR 19768, C++ Library Extensions, which is a document that proposed additions to the C++ standard library for the C++03 language standard. The additions include regular expressions, smart pointers, hash tables, and random number generators. TR1 was not a standard itself, but rather a draft document. However, most of its proposals became part of the later official standard, C++11. Before C++11 was standardized, vendors used this document as a guide to create extensions. The report's goal was "to build more widespread existing practice for an expanded C++ standard library". The report was first circulated in draft form in 2005 as Draft Technical Report on C++ Library Extensions, then published in 2007 as an ISO/IEC standard as ISO/IEC TR 19768:2007.
Шолу
Компиляторларға 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-ге қосылмаған).