The draft C++ standard

The draft C++ standard is now generally available.
To get it, go to

	research.att.com, directory dist/c++std/WP

There are seven files there; one is a README which explains the
rest and the rules for using the text. I expect several more
ftp sites to ``come on line'' with the draft over the next few days.

The C++ standards committees' (ANSI XJ316, ISO SC22-SG21) purpose of
making the draft available this way is to get feedback on the language
and standard library as described and in particular on the details of
that description:

	is the description clear?

	is the description complete?

	is the description comprehensible?

	can the language as described be used in the areas
	where C++ is used?

	can the standard as described be used in the areas
	where C++ is used and where the standard library
	is applicable?

A  public review is primarily an exercise for language lawyers.
The members of the committee makes this draft available because they
feel that the language and library is reasonably complete and that the
framework for the description is reasonably clear. Now is the time to
pick nits and polish the presentation; it is not the time to try to
redesign the language or the library according to new principles.

Let me give a few examples of suggestions that I personally think
would stand little chance of acceptance at this stage:

	banning the preprocessor

	adding concurrency

	generalizing the switch statement to select based on a string

	requiring automatic garbage collection

	requiring 100% ISO C compatibility

	adding a regular pattern matching library

	adding a persistence library

Naturally every comment will be considered, and equally naturally the
chance of a change increases if the suggestion is constructive, specific,
fits with the rest of the language, is of general utility, is easily
implementable and hasn't already been considered and rejected by the
committee.

The way to make official comments will be posted in a few days when
the US public review officially starts. Please note that many committee
members read the net, but that postings to the net are not formal comments:
they can easily be overlooked in the volume of traffic. So can private
mail to members. To be sure your comments are not lost, use the official
ANSI channels.

I suggest that the best place for discussion of the draft standard
is comp.std.c++. Please remember that an agreement between a few posters
doesn't constitute a majority of the committee or of the C++ community.
The C++ community is unimaginably diverse, and most C++ users don't
take part in net discussions.

Note that as far as ANSI and ISO is concerned, you have had five years
to make your comments and contributions and for the committee to have
considered them. Starting to learn about the language and the standards
procedure now is rather late in the day.

Note that the standard in not a tutorial; it is not expected that you can
learn C++ programming, object-oriented programming, generic programming,
string manipulation using international character sets, etc., from the
draft standard. Do not expect to be able to make contributions to the
standard related to a form of programming in which you are not already
an expert. In my opinion, precision and formality were in places achieved
at the cost of some accessibility. I don't particularly like that, but
I don't see an alternative.

There is no rationale. We tried several times to organize an effort to
write one, but the resources of the committee - that is the voluneteer
time and effort offered - didn't stretch to both getting the standard
written an to write a rationale.

For people who are interested in the workings of the committee, the
reasoning behind many of its decisions, and the design of C++ in general,
I recommend:

	Bjarne Stroustrup
	The Design and Evolution of C++
	Addison Wesley, ISBN 0-201-54330-3.

The standard is large (700+ pages), but that is not large compared to
other standards for modern programming languages. Similarly, the time
taken by the C++ standards effort so far compared favorably with other
standards efforts.
	
The draft is the result of a sustained effort by many volunteers.
My personal opinion is that the draft is better than many thought
possible. It isn't perfect, but then it couldn't be, and it is still
just a draft. If enough people help by making constructive comments
on the draft, the standard will be better yet. Please help by making
constructive comments, by making the draft standard understood, and
by opposing the inevitable ignorant screaming in a dignified manner.

Note that several standards organizations make various claims on the
copyright of standards and draft standards. In addition, the rights of
holders of copyrights of base documents must be considered. Furthermore,
the standards organizations are - quite reasonably - most concerned
that people don't mistake a draft standard for a standard, and also that
quotes from a draft standard don't find their way into the literature
where they can get mistaken for references to a standard. In other
words, the draft standard is made available for comments as a part
of the standards process and not for any other purposes. Please respect
that.

	- Bjarne

PS For the legalistically minded, I must point out that I am not an
officer of any of the C++ committees, so this message is not a
formal communication from those committees. It is simply a personal
effort to help us get us a good and timely C++ standard.
----------------------------------------

Lutz Lilje
<lilje@desy.de>