Templates❍
The Standard Template Library❍
Internationalization and Localization❍
Miscellaneous❍
Deprecated Feature
Use of an Operand of Type bool with the Postfix ++ Operator❍
Use of static to Declare Objects in Namespace Scope❍
Access Declarations❍
Implicit Conversion from const to non-const Qualification for String Literals❍
Standard C Headers in the form <name.h>❍
Implicit int Declarations❍
Other Deprecated Features❍
●
Conclusions●
Introduction
C++ today is very different from what it was in 1983, when it was first named "C++". Many features have been added
to the language since then; older features have been modified, and a few features have been deprecated or removed
entirely from the language. Some of the extensions have radically changed programming styles and concepts. For
example, downcasting a base to a derived object was considered a bad and unsafe programming practice before the
standardization of Runtime Type Information. Today, downcasts are safe, and sometimes even unavoidable. The list
of extensions includes const member functions, exception handling, templates, new cast operators, namespaces, the
Standard Template Library, bool type, and many more. These have made C++ the powerful and robust multipurpose
programming language that it is today.
The evolution of C++ has been a continuous and progressive process, rather than a series of brusque revolutions.
Programmers who learned C++ only three or five years ago and haven't caught up with the extensions often discover
that the language slips through their fingers: Existing pieces of code do not compile anymore, others compile with a
plethora of compiler warnings, and the source code listings in object-oriented magazines seem substantially different
from the way they looked not so long ago. "Namespaces? never heard of these before," and "What was wrong with
C-style cast? Why shouldn't I use it anymore?" are some of the frequently asked questions in various C++ forums and
conferences.
Understanding the ANSI/ISO Standard
But even experienced C++ programmers who have kept up with changes by subscribing to newsgroups, reading
magazines and books, or exchanging emails with the company's guru might still find that the C++ nomenclature in
professional literature is sometimes unclear. The ANSI/ISO Standard is written in a succinct and technical jargon that
is jocularly called standardese -- which is anything but plain English. For instance, the One Definition Rule (article
3.2 in the Standard), which defines under what conditions separate definitions of the same entity are valid, is
explained in textbooks in a simpler -- although sometimes less accurate -- manner, when compared to the Standard
text. The use of standardese ensures the accuracy that is needed for writing compilers and checking the validity of
programs. For this purpose, the Standard defines numerous specific terms that are used extensively throughout the
volume; for instance, it distinguishes between a template id and a template name, whereas an average programmer
simply refers to both as templates. Familiarity with these specific terms is the key to reading and interpreting the
ANSI/ISO C++ Professional Programmer's Handbook - Chapter 2 - Standard Briefing: The Latest Addenda to ANSI/ISO C++