C/C++ Users Journal January, 2005

Trip Report: October 2004

This month, an update on the most recent C++ Standards meeting, and the progress on the C++0x Standard language and library

By Herb Sutter

Herb Sutter (http://www.gotw.ca/) chairs the ISO C++ Standards committee and is an architect in Microsoft's Developer Division. His most recent books are Exceptional C++ Style and C++ Coding Standards (Addison-Wesley).

Whew. As I write this, we just finished up with the fall 2004 ISO C++ Standards meeting, held in Redmond, Washington, USA from October 17-22, 2004. The C++ Standards committee continues to meet twice a year; the next meeting will be in Lillehammer, Norway, on April 10-15, 2005. (See my previous trip report [1] for details about the previous meeting, held in spring 2004 in sunny Sydney, Australia.)

This meeting saw some long days. For example, Monday went until 11:00 pm with a presentation by Andrei Alexandrescu on thread/concurrency support for C++, based on a paper by Andrei and highly respected friends, along with two other evening presentations on the topics of hash-based containers and policy-based design for smart pointers and other library features. On Wednesday, we went until after 9:00 pm with a session led by Bjarne Stroustrup to organize meaningful subgroups to parallelize the C++0x evolution work.

It was a strenuous meeting, but the effort was worthwhile because it led to real progress.

Highlights

Here are the highlights of this meeting:

Now let's drill down a little. To make this a self-contained article, I'll recap some of the preexisting status as we go, but focus on the current news and updates from this meeting. For more detailed information about some of the things that I've already covered in the past, see [2].

C++ Language Evolution

The Evolution Working Group has a slew of proposals, where a "slew" is a unit much greater than a dozen, and probably greater than a gross. There's no way everything can get attention, and in addition to triage, it's important to recognize that only those proposals that have people who care enough about them to spend time to work on them will move forward.

At this meeting, the Evolution Working Group moved forward on several proposals that are likely to be ready to be voted on to be added to Draft Standard C++ at our next meeting (Norway, April 2005). Here are some of the proposals that seem most likely to come up for vote, but I want to add the caution that some are still somewhat controversial and any of them might fail to reach consensus: C99 long long; fixing right angle brackets (for instance, making vector<vector<int>> legal without having to put that silly space between the two closing angle brackets, >> versus > >); a static_ assert facility for compile-time assertions; nullptr as a spelling for the null pointer value; strongly typed enumerations; extended friend support; and adopting C99's preprocessor extensions.

That still leaves a lot of work that people want to do and that needs doing. To parallelize and speed up the work of the Evolution Working Group, Bjarne Stroustrup has organized the Evolution Working Group into three chunks. Here they are, with the name of the person chairing each subgroup:

There's one more evolution-related group, which we want to fall mostly under the Library Working Group because we'd like the extensions to primarily emphasize library extensions, not language extensions:

It'll be interesting to see how much progress we can make on these fronts between meetings over the next six months.

Summary

C++ library extensions are in full swing, and C++ language extensions are moving well. Soon, just a few months from now, we'll see the first changes actually voted into Draft Standard C++0x (perhaps we should call this "ISO C++ v2"). This progress can only benefit programmers everywhere, and there's a lot of exciting work ahead in the next couple of years.

References

[1] Sutter, H. "Trip Report: March 2004," C/C++ Users Journal, June 2004.

[2] ISO/IEC JTC1/SC22/WG21/N1687. "(Draft) Technical Report on Standard Library Extensions" (ISO C++committee working document, September 2004). This document is available online at http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1687.pdf.