T
his
is a special edition of Bjarne Stroustrup's classic C++ text book on the
C++ programming language. The third edition was already almost complete
as a reference to all relevant aspects of the C++ language and the standard
library. The only omissions were the internationalization support and exception
safety aspects in the standard library. The book now covers these topics
in two additional appendices, which make the classic language reference
even more complete than ever.
No
other C++ text book we know of explains internationalization. The only
other references we know of for information on this type of support in
the standard library are Nicolai Josuttis's book on
The
C++ Standard Library
, our book on
Standard
C++ IOStreams and Locales
, and an upcoming title by Dave Schmitt
on
International Programming for Windows
that specifically focuses
on Visual C++.
Stroustrup
discusses internationalization support in 65 pages, which are enough to
explain the locale and facet classes in adequate depth and detail. It is
information comparable to the coverage in
The C++ Standard Library
and
International
Programming for Windows
, but less than you'll find in our
Standard
C++ IOStreams and Locales
. Stroustrup explains class locale and the
standard facet classes with all their features and functionality, but does
not delve into an in-depth discussion of locales and facets as an extensible
framework.
Different
from all other discussions of the standard facets, Stroustrup includes
a detailed discussion of low-level time operations such as
clock()
,
time()
,
asctime()
,
and so on. These C functions are part of the standard C library, which
is a part of the standard C++ library, but the low-level time operations
are not C++-specific or new. For this reason it is kind of surprising to
find them included in a discussion of the C++ internationalization support.
Yet it makes sense that Stroustrup includes the low-level C functions,
because the C++ time facets are closely related to them.
By
and large, the new appendix on locales in Stroustrup's special edition
of
The C++ Programming Language
provides enough information for
understanding and using C++ locales and standard facets.
On
the topic of exception safety in the standard library, this book offers
the best coverage we've seen so far. Neither Nicolai Josuttis's book nor
Matthew Austern's
Generic
Programming and the STL
, which is one of the best books on the
STL, provide any substantial discussion of the topic.
Stroustrup
explains exception safety issues, including the different levels of safety
guarantees given the standard library operations, in 34 pages. He discusses
the safety problems associated with using a sample implementation of the
vector container. This discussion articulates the container-operation guarantees,
and it is also an instructive demonstration of programming in the presence
of exceptions. Programmers can derive conclusions for their own programming
practice from it. Stroustrup provides a nice summary of the container-operation
guarantees in a well-organized table and does not forget to discuss exception
safety issues in other components of the standard library, such as strings,
streams, and algorithms.
In
sum,
The C++ Programming Language, Special Edition
offers the best
coverage of exception safety issues in the standard library today.
Angelika
Langer
develops and teaches classes on advanced C++, STL, multithreading,
internationalization, and Java. She served on the ANSI/ISO C++ Committee
from 1993 to 1998.
Klaus Kreft
is a software architect and consultant
with 15+ years of experience in industrial software development. He works
for Siemens Business Services in Germany. Langer and Kreft are authors
of "Standard C++ IOStreams and Locales: Advanced Programmer's Guide and
Reference" (Addison-Wesley, 1999) and are columnists for
C++
Report
magazine.
|