The Casting Vote

by Sean A. Corfield

The location of the latest meeting was exotic enough to make up for the relatively dull decisions made: Tokyo was the venue for the November '95 ISO/ANSI C++ meeting.

Not that we should be doing anything exciting at this stage of the standards process - the focus of the committee's work is on resolving small issues now. A large number of these small problems were sorted out with the committee voting on 31 motions, all of which dealt with one or more "bug" in the draft.

Debugging the draft

I said "bug" because in many ways the C++ standards process can be viewed like any other software project: we have a tight deadline and limited resources and we have to release a product onto the world market for which there will effectively be no upgrades for many years. We produced an "alpha" release this year - the first CD - and several countries rejected it, including France, Germany, Netherlands, Sweden and the UK. At the moment, we are fixing the problems identified by those alpha testers so that we can ship a beta release next year - the second CD. If that proves acceptable, we can ship the prerelease version in 1997 - the DIS - which hopefully will require no more than a few typos being fixed.

So how do you manage bug reports on 700+ pages of "source"? Each module - "clause" - is the responsibility of one member of the committee who gathers bug reports for their module, analyses the problems and suggests possible resolutions. A subgroup of the committee then examines and sometimes reworks the resolution to produce a proposal for the full committee. If the majority of the committee think the fix will "work", it is accepted and the "programmers" - the Project Editor and his team of helpers - integrate the resolution into the source.

Testing the fixes

This is the hard part at the moment: there are no compilers that implement the whole draft. Without widespread support for, and use of, the language features that we are "fixing" we cannot test the solutions to any great extent. Microsoft's latest offering supports namespace and RTTI, alongside templates and exception handling. Soon, many UNIX vendors will also be offering namespace and we will begin to see how this feature behaves in use and whether the small fixes applied at this meeting were, in fact, correct - I believe they were.

The same is true for other parts of the standard and especially so for the library. Although implementations of parts of the library have been available for some time, I find it hard to accept that the gothic monstrousities that are locale and iostream have been seriously tested in commercial use.

We have to face the fact that when C++ v1.0 appears, it may have many dark untested corners and v1.1 will be some years away - v2.0 will be 5 to 10 years away.

On the horizon

Perhaps more interesting than what we did at this meeting is what we have yet to solve. The library has a myriad open issues - some of you who've been trying to use auto_ptr or the STL will have already encountered some of them. Within the language itself, there are probably only three or four dozen known bugs that we have to solve next time. However, two of those are long-standing, difficult problems:

We now have ideas on how to resolve these and solutions should be available for the next committee meeting - which will be reported on in Overload 13 (April '96). That's all I have time for - I have some template papers to write for the post-Tokyo mailing!

Sean A. Corfield
Object Consultancy Services