Scott Meyers' Effective C++: TR1 Information (original) (raw)
TR1 Information
Effective C++, Third Edition summarizes TR1 this way:
TR1 ("Technical Report 1") is a specification for new functionality being added to C++'s standard library. This functionality takes the form of new class and function templates for things like hash tables, reference-counting smart pointers, regular expressions, and more. TR1 itself is just a document. As I write this in early 2005, the document has not been finalized, and its URL is subject to change.
TR1 has since been finalized. The final version is dated 24 June 2005. It's officially a draft, but that's due only to procedural issues; the content will not change.
TR1 Contents
The following table gives an overview of the contents of TR1. The columns show the page number of Effective C++, Third Edition that summarizes that part of TR1; the name used by Effective C++, Third Edition for that component; the name used in the TR1 Table of Contents for that component; and the number of the C++ standardization document that proposed the component.
TR1 itself contains no background information on the components it specifies, i.e., it offers no rationale for the functionality it provides, gives no examples of how it would be useful, provides no reasoning for the interfaces being the way they are, etc. That kind of information is available in the proposal documents and in the publications listed later on this page. In the table below, each proposal document number is a link to the proposal itself. Except as noted, all proposal documents are in HTML.
EC++Page | _Effective C++, Third Edition_Name | TR1 Name | ProposalDocument |
---|---|---|---|
265 | Smart Pointers | Smart Pointers | n1450 |
265 | tr1::function | Polymorphic Function Wrappers | n1402 |
266 | tr1::bind | Function Object Binders | n1455 |
266 | Hash Tables | Unordered Associative Containers | n1456 |
266 | Regular Expressions | Regular Expressions | n1429 |
266 | Tuples | Tuple Types | n1403 (PDF) |
267 | tr1::array | Fixed Size Array | n1479 |
267 | tr1::mem_fn | Function Template mem_fn | n1432 |
267 | tr1::reference_wrapper | Reference Wrappers | n1453 |
267 | Random Number Generation | Random Number Generation | n1452 |
267 | Mathematical Special Functions | Mathematical Special Functions | n1422 |
267 | C99 Compatibility Extensions | C Compatibility | n1568 |
267 | Type Traits | Metaprogramming and Type Traits | n1424 |
267 | tr1::result_of | Function Return Types | n1454 |
Publications About TR1
Coincidentally, two magazine overviews of TR1 appeared at about the same time Effective C++, Third Edition came out. They are:
- "The Technical Report on C++ Library Extensions," Matthew H. Austern, Dr. Dobb's Journal, June 2005.
- "The New C++ Not-So-Standard Library," Pete Becker,Dr. Dobb's Journal, June 2005.
- This is the first in a series of columns on various parts of TR1.
There is also a comprehensive book on TR1:
- The C++ Standard Library Extensions, Pete Becker, Addison-Wesley, 2007, ISBN 0-321-41299-0.
TR1 Implementations
I am aware of the following implementations of all or major parts of TR1, but there may be others that I don't know about.
- Boost has implemented functionality that is close or identical to most of the components of TR1. It also offers a TR1 library facade that yields native functionality if it's available and Boost functionality if not (provided Boost has the functionality, which is not always the case).
- Microsoft offers most TR1 functionality for Visual C++ 2008 via a free download. You can find more information at the Visual C++ 2008 Feature Pack Release page. Note that the download will not work with the Express Edition of Visual C++ 2008, nor with a version for any language other than English.
- GCC includes much of TR1's functionality as part of the standard library that ships with version 4 of its C++ compiler.
- Dinkumware offers a full implementation of TR1 as a commercial product.