Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Документ, предлагающий дополнения к стандартной библиотеке C++
Document that proposed additions to the C++ standard library
C++ Technical Report 1 (TR1) – это общепринятое название для ISO/IEC TR 19768, C++ Library Extensions, представляющего собой документ, предлагающий дополнения к стандартной библиотеке C++ для языкового стандарта C++03. Эти дополнения включают регулярные выражения, интеллектуальные указатели, хэш-таблицы и генераторы случайных чисел. TR1 не являлся стандартом сам по себе, а был лишь проектом документа. Однако большинство его предложений вошли в состав более позднего официального стандарта C++11. До стандартизации C++11 поставщики использовали этот документ как руководство при создании расширений. Целью отчета было "распространение существующей практики для расширенной стандартной библиотеки C++". Впервые отчет был распространен в виде проекта в 2005 году под названием Draft Technical Report on C++ Library Extensions, а затем опубликован в 2007 году в качестве стандарта ISO/IEC под номером ISO/IEC TR 19768:2007.
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.
Обзор
Компиляторам не требовалось включать компоненты TR1 для соответствия стандарту C++, поскольку предложения TR1 не входили в сам стандарт, а представляли собой лишь набор возможных дополнений, которые еще предстояло утвердить. Однако большая часть TR1 была доступна в Boost, и ряд разработчиков компиляторов и библиотек реализовали все или некоторые из этих компонентов. TR1 не является исчерпывающим списком дополнений к библиотеке, появившихся в C++11. Например, C++11 включает библиотеку поддержки многопоточности, которой нет в TR1. Новые компоненты были определены в пространстве имен std::tr1, чтобы отличать их от стандартной библиотеки того времени.
Compilers did not need to include the TR1 components in order to conform to the C++ standard, because TR1 proposals were not part of the standard itself, only a set of possible additions that were still to be ratified. However, most of TR1 was available from Boost, and several compiler/library distributors implemented all or some of the components. TR1 is not the complete list of additions to the library that appeared in C++11. For example, C++11 includes a thread support library that is not available in TR1. The new components were defined in the std::tr1 namespace to distinguish them from the then current standard library.
Метапрограммирование и типные признаки
Теперь существует заголовочный файл <type traits>, содержащий множество полезных меташаблонов признаков, таких как is_pod, has_virtual_destructor, remove_extent и другие. Он упрощает метапрограммирование, предоставляя возможность запрашивать информацию о типах и преобразовывать их. Предложение основано на библиотеке Boost Type Traits.
There is now <type traits> header file that contains many useful trait meta templates, such as is pod, has virtual destructor, remove extent, etc. It facilitates metaprogramming by enabling queries on and transformation between different types. The proposal is based on Boost Type Traits library.
C совместимость
C++ разработан для совместимости с языком программирования C, но не является полным надмножеством C из-за расхождения стандартов. TR1 пытается устранить некоторые из этих различий посредством дополнений к различным заголовочным файлам в библиотеке C++, таким как <complex>, <locale>, <cmath> и другие. Эти изменения помогают приблизить C++ к стандарту C99 (не все части C99 включены в TR1).
C++ is designed to be compatible with the C programming language, but is not a strict superset of C due to diverging standards. TR1 attempts to reconcile some of these differences through additions to various headers in the C++ library, such as <complex>, <locale>, <cmath>, etc. These changes help to bring C++ more in line with the C99 version of the C standard (not all parts of C99 are included in TR1).