Trip Report: March 2004

C/C++ Users Journal June, 2004

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

By Herb Sutter

Herb Sutter (http://www.gotw.ca/) is convener of the ISO C++ Standards committee, author of Exceptional C++ and More Exceptional C++, and Visual C++ architect for Microsoft.

The C++ Standards committee continues to meet twice a year. This time, I want to report on the Spring 2004 meeting which was held in Sydney, Australia, on March 21-26, 2004.

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 the references that I'll include to those other articles.

What We're Doing, Part 1: Library Extensions Update

Why should you care about the work the Standards committee is doing?

In the short term, you might care because we're working on extensions to the C++ Standard Library, many of which are commercially available today or will be available soon from multiple community and vendor implementations. The first round of these library extensions, known as Library Extensions Technical Report 1 (Library TR1), is expected to be complete later this year. In recent articles, I've already written extensively about several of these new facilities, including:

Others that I haven't covered yet, but intend to cover in future columns, include:

There are a few more facilities in this first batch of Standard Library extensions, including a bountiful bevy of beautifully brilliant mathematical special functions, but the ones I've listed are the ones that are most likely to be of wide interest out of the batch that's due to be technically complete later this year.

But wait, there's more: Although this first set of extensions is nearly done, at this meeting the committee formally decided to embark on a second round of extensions. This means that the aforementioned is the beginning, not the end—the steady flow of such additions to the Standard Library will continue for the foreseeable future, starting with an advanced iterator facility that didn't quite gel in time to be part of the first batch.

What We're Doing, Part 2: Language Extensions Update

Another reason to care about what the committee is doing is that we're also working on the next evolution of the C++ Standard. It's colloquially known as "C++0x" because we plan to complete work on it in this decade.

In my April 2004 column [1], I reported on the goings-on at the Fall 2003 meeting, as well as news from related meetings of the C and C++/CLI committees and how their work is being coordinated with C++. At this year's Spring meeting, we find the Evolution Working Group continuing to make progress sifting through language extension proposals. About two dozen specific proposals had papers, were discussed in detail, and will be further refined; some are very close to ready to vote into the draft Standard. Here are some highlights of concrete proposals that are in pretty solid form and enjoyed particularly strong support, so that they're among the most likely language extensions to be part of C++0x in some form; several of them also bear on collaboration with other Standards bodies (C and C++/CLI).

I hope to cover several of these features in upcoming installments of this or another column.

Summary

C++ library extensions are in full swing, and C++ language extensions are moving well. C++ and C++/CLI continue to actively collaborate well to respect C++ evolution and craft the highest possible quality of C++ language extensions for modern environments. C and C++ are continuing to work in good faith to iron out the source-level incompatibilities between the two languages, notably the language extensions introduced in the C99 Standard. This can only benefit programmers everywhere, especially those who use both languages, or even just use compilers that support both languages.

What's not to like? It's been quite a good year.

References

  1. [1] H. Sutter. "Trips Report: October-December 2003," C/C++ Users Journal, 22(4), April 2004.
  2. [2] H. Sutter. "Smart(er) Pointers," C/C++ Users Journal, 20(8), August 2002. http://www.cuj.com/documents/s=7980/cujcexp2008sutter/.
  3. [3] H. Sutter. "Tuples," C/C++ Users Journal, 21(6), June 2003. http://www.cuj.com/documents/s=8250/cujcexp2106sutter/.
  4. [4] H. Sutter. "Generalized Function Pointers," C/C++ Users Journal, 21(8), August 2003. http://www.cuj.com/documents/s=8250/ cujcexp2106sutter/.
  5. [5] H. Sutter. "Generalizing Observer," C/C++ Users Journal, 21(9), September 2003. http://www.cuj.com/documents/s=8840/cujexp0309sutter/.
  6. [6] H. Sutter. "Much Ado About Nothing: A (True) Null Pointer Value for C++," C/C++ Users Journal, 22(5), May 2004.
  7. [7] H. Sutter and J. Hyslop. "Enumerations," C/C++ Users Journal, 22(5), May 2004.