Technical Report 1
Technical Report 1 (TR1) to zbiór proponowanych rozszerzeń do biblioteki standardowej C++, takich jak wyrażenia regularne, sprytne wskaźniki, tablice haszujące i generatory liczb losowych. TR1 nie jest jeszcze ustandaryzowany, ale prawdopodobnie stanie się w dzisiejszej formie częścią następnego oficjalnego standardu C++. W tym czasie twórcy narzędzi mogą pomocniczo używać tego dokumentu.
TR1 to nie wszystkie rozszerzenia do biblioteki standardowej które będą dostępne w następnym standardzie; dla przykładu następny standard, C++0x, może zawierać obsługę dla wątków. Istnieje też drugi Technical Report, TR2 planowany do opublikowania po C++0x.
Nowe komponenty znajdują się w przestrzeni nazw std::tr1 aby oddzielić je od obecnej biblioteki standardowej.
Spis treści |
[edytuj] Komponenty
[edytuj] Generalne narzędzia
[edytuj] Reference Wrapper
- przeniesiony z Boost.Ref
- dodatki do pliku nagłówkowego <functional> - cref, ref, reference_wrapper
- umożliwia przekazywanie do algorytmów i funktorów referencji, zamiast kopii
[edytuj] Sprytne wskaźniki
- oparte na bibliotece Boost Smart Pointer
- dodatki do pliku nagłówkowego <memory> - shared_ptr, weak_ptr itd.
- narzędzie do zarządzania pamięcią umożliwiające odporność na wyjątki, z użyciem idiomu Resource Acquisition Is Initialization (RAII).
[edytuj] Funktory
Cztery moduły dodane do nagłówka <functional>:
[edytuj] Polymorphic Function Wrapper
- function
- oparty na Boost.Function
- przechowuje wszystkie typy dające się wywołać (wskaźnik do funkcji, wskaźnik do funkcji składowej, funktor) mające podaną sygnaturę wywołania funkcji. nie jest wymagane podanie konkretnego typu obiektu dającego się wywołać.
[edytuj] Function Object Binders
- bind
- skopiowany z biblioteki Boost Bind
- zgeneralizowana wersja standardowego std::bind1st i std::bind2nd
- binduje parametry do funktorów i pozwala na złożenie funkcji
[edytuj] Function Return Types
- result_of
- skopiowany z Boost
- ustala typ wyrażenia wywołania
[edytuj] mem_fn
- mem_fn
- oparte na bibliotece Boost Mem Fn
- dodatek do standardowych std::mem_fun i std::mem_fun_ref
- pozwala na traktowanie wskaźników do funkcji składowych jako funktorów
[edytuj] Metaprogramming and Type Traits
- nowy plik nagłówkowy <type_traits> - is_pod, has_virtual_destructor, remove_extend, itd.
- oparty na bibliotece Boost Type Traits
- umożliwia metaprogramowanie pozwalając na zapytania i konwersje między różnymi typami
[edytuj] Narzędzia numeryczne
[edytuj] Generacja liczb losowych
- nowy plik nagłówkowy <random> - variate_generator, mersenne_twister, poisson_distribution, itd.
- narzędzia do generowania liczb losowych z użyciem różnych silników i rozkładów prawdopodobieństwa
[edytuj] Funkcje matematyczne
- dodatki do plików nagłówkowych <cmath>/<math.h> - beta, legendre, itd.
- funkcje matematyczne
[edytuj] Kontenery
[edytuj] Krotki
- nowy plik nagłówkowy <tuple>
- oparty na bibliotece Boost Tuple
- rozszerzenie standardowego std::pair
- stałego rozmiaru kolekcje elementów mogących mieć różne typy
[edytuj] Tablica stałego rozmiaru
- nowy plik nagłówkowy <array>
- pobrany z biblioteki Boost Array
- w przeciwieństwie do dynamicznych typów tablicowych takich jak standardowy std::vector
[edytuj] Tablica haszująca
- nowe pliki nagłówkowe <unordered_set>, <unordered_map>
- nowa implementacja, nie oparta na istniejącej bibliotece, z api nie do końca kompatybilnym z istniejącymi bibliotekami
- tak jak wszystkie tablice haszujące zwykle umożliwia dostęp do elementów w czasie stałym, a w najgorszym przypadku w czasie liniowym do rozmiaru pojemnika
[edytuj] Wyrażenia regularne
- nowy plik nagłówkowy <regex> - regex, regex_match, regex_search, regex_replace, itd.
- oparte na bibliotece Boost RegEx
[edytuj] Kompatybilność z C
TR1 próbuje poprzez różne dodatki do plików nagłówkowych z C++, takich jak <complex>, <locale>, <cmath> przybliżyć C++ do wersji C99 standardu C. (nie wszystkie części C99 są dostępne w TR1).
[edytuj] Zobacz też
- Boost, zbiór przenośnych bibliotek dla języka C++, wiele z nich znajduje się w TR1.
- Standard Template Library, część obecnej biblioteki standardowej C++
- Dinkumware, jedyny komercyjny dostawca w pełni implementujący TR1