Those of you who believe in programming language standards will be pleased to know that the draft C++ Standard has reached an important plateau. At the July meeting in Kitchener, Ontario, X3J16 and WG21 (the US and ISO committees) voted to submit the latest draft for a process known as "CD registration." That unleashes the first of the three ballots within ISO committee JTC1/SC22 that eventually leads to an international standard.The particular importance of this step is its nominal stabilizing influence on the draft. All the major components of the draft C++ Standard are supposed to be in place at this point, so the community as a whole should know the rough size and shape of this thing called Standard C++.
I suspect this will be welcome news to many. The C++ standardization effort has been noted for its tendency to add major new language features at the rate of better than one per year. Templates, exceptions, run-time type identification, namespaces you've probably heard the litany of changes. Each makes for a major new dialect, and a new way of thinking about how to use the language.
You've also seen the wake left behind in the commercial compiler world, a kind of Cerenkov radiation as the language specification plows through the industry much faster than it can respond. You may be less aware of the smaller, but still significant, language changes made at almost every meeting to date. Multiple flavors of type casts, default template parameters, member templates. These too have proliferated dialects as vendors rush to market at different stages of the process.
So the good news is that the language may be starting to settle down. The bad news, at least to my way of thinking, is that the orgy of innovation ended with a bang. People are starting to get intrigued by the prospect of templates, and they've done so in a big way. Just before voting out the draft, the two committees voted in extensive additions to the Standard C++ library.
One batch of additions provides templates for all of iostreams. One instantiation is the current flavor, dealing with sequences of char. Another is for sequences of wchar_t, the large-character set crowd. But you can, of course, instantiate your own flavor(s) as well. Much the same sort of "templatization" has happened to the string class as well.
Even more exciting is the addition of an ambitious Standard Template Library. Derived from a proprietary package developed at Hewlett Packard by Alex Stepanov and Meng Lee, this clever set of templates makes the C++ portion of the standard library about 60 per cent bigger. I think it's a great piece of technology, but I worry about standardizing a package with so little industry experience, particularly given the current state of support for templates.
The C++ committees are far more inventive than the C committees ever felt bold enough to essay. I suppose they address different constituencies, with different expectations. Still, I can't help but see language design by standardization as a risky experiment. It will be interesting to see how the market responds.
P.J. Plauger
pjp@plauger.com